我对应用程序中的每日用户操作设置了限制,我想跟踪用户每天有多少时间达到限制。
我有一个属于+
的{{1}}模型,并且极限表有两列:Limit
和User
。
限量型号:
users_per_day_reached
当用户根据其帐户级别达到每日事件限制时,我想在该日期每次发生时都在数据库中增加events_per_day_reached
计数器。
所以,我试图弄清楚如何做:
id: nil,
created_at: nil,
updated_at: nil,
users_per_day_reached: nil,
events_per_day_reached: nil,
user_id: nil
我只是不知道编写这些查询的最“ Rails”方式。
答案 0 :(得分:2)
问题在于updated_at
列是日期时间,但与日期进行了比较
一种解决方案是将日期时间转换为日期:
@user.limits.last.updated_at.to_date == Date.today
或者(可能更优雅),有一种ActiveSupport::TimeWithZone#today?方法可以解决问题:
if @user.limits.last.updated_at.today?
@user.limits.last.events_per_day_reached.increment!
else
@limit = Limit.new(user_id: @user.id)
@limit.increment(:events_per_day_reached)
@limit.save
end
答案 1 :(得分:0)
另外,条件块应该是
if @user.limits.last.updated_at.to_date == Date.today
your code.....
else
your code.....
end
elsif
接受争论