我在@dailylogs中有一組日期記錄。如何填寫表中的日期條目之間的空白
可以說我有一排(dailylog)爲本月1日。當我爲15日添加新記錄時,請如何在每天之間添加空白條目,以便每月的每一天都有條目。
我可以計算兩個日期之間的天數,所以通過@dailylogs循環來檢查兩天之間是否有條目....但我只是不能解決它。
感謝
我在@dailylogs中有一組日期記錄。如何填寫表中的日期條目之間的空白
可以說我有一排(dailylog)爲本月1日。當我爲15日添加新記錄時,請如何在每天之間添加空白條目,以便每月的每一天都有條目。
我可以計算兩個日期之間的天數,所以通過@dailylogs循環來檢查兩天之間是否有條目....但我只是不能解決它。
感謝
如果你有兩個Date
對象是非常簡單的。
require 'date'
from = Date.new(2017, 1, 1)
to = Date.new(2017, 1, 5)
from.step(to).to_a
=> [#<Date: 2017-01-01 ((2457755j,0s,0n),+0s,2299161j)>, #<Date: 2017-01-02 ((2457756j,0s,0n),+0s,2299161j)>, #<Date: 2017-01-03 ((2457757j,0s,0n),+0s,2299161j)>, #<Date: 2017-01-04 ((2457758j,0s,0n),+0s,2299161j)>, #<Date: 2017-01-05 ((2457759j,0s,0n),+0s,2299161j)>]
我做了這樣的結尾:
x = 1
day_range.times do
if Dailylog.search_day(date_today.month, date_today.year, x, user).blank?
create_date = DateTime.new(date_today.year, date_today.month, x)
Dailylog.create(date: create_date, miles: "0", locations: "nil", user_id: user)
end
x+=1
end
其用於:
def Dailylog.search_day(month, year, day, user)
where("cast(strftime('%m', date) as int) = ?", month)
.where("cast(strftime('%Y', date) as int) = ?", year)
.where("cast(strftime('%d', date) as int) = ?", day)
.where("user_id = ?", user)
末
它的工作原理,但作爲一個初學者高興能如果能糾正做得更好。
Thx。
我在最後這樣做了。 – Simonp27