如果用戶使用days_challenge: 5
& committed: ["mon", "tue", "wed", "thu", "fri"]
創建一個質詢,那麼我們如何使用名爲dates_challenged
的模型方法創建一個從date_started: "2016-04-20"
到日期最後一天的日期數組?如何將整數轉換爲日期數組?
create_table "challenges", force: true do |t|
t.string "action"
t.date "date_started"
t.text "committed", default: "---\n- sun\n- mon\n- tue\n- wed\n- thu\n- fri\n- sat\n"
t.integer "days_challenged"
end
的陣列會是這個樣子:["2016-04-20", "2016-04-21", "2016-04-22", "2016-04-25", "2016-04-26"]
class Challenge < ActiveRecord::Base
serialize :committed, Array
def dates_challenged
# Not sure if a model method is enough or if I'd have to migrate a new column
end
def committed_wdays
committed.map do |day|
Date::ABBR_DAYNAMES.index(day.titleize)
end
end
def days_left_challenged
def days_done_challenged
((date_started.to_date)..Date.yesterday).count do |date|
committed_wdays.include? date.wday
end
end
if self.days_done_challenged >= self.days_challenged
0
else
self.days_challenged - ((date_started.to_date)..Date.yesterday).count do |date|
committed_wdays.include? date.wday
end
end
end
end
爲了澄清,我試圖做一個模型的方法,所以我可以在一個視圖中,我可以然後遍歷做@challenge.dates_challenged
日期數組。
部分問題是你如何得到結束日期?不過謝謝,如果我能夠自己創建方法,使用信息作爲答案,我會給你信用:] –
你想要最新的日期的挑戰嗎? – lfender6445
我正在嘗試使用'dates_challenged'方法創建一個日期數組。我舉例說明如果'date_started'是今天,'days_challenged'是5,'committed'是工作日,會輸出什麼。希望更清楚。抱歉不太清楚你的問題。 –