我对应用程序中的每日用户操作有一个限制,我想跟踪用户每天达到限制的时间。
我有一个属于User
的Limit
模型,极限表有两列: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
当用户根据其帐户级别达到每天事件数限制时,我希望在该日期每次发生这种情况时都增加数据库中的events_per_day_reached
计数器。
所以,我正试图弄清楚如何做一些事情,比如:
if @user.limits.last.updated_at === Date.today
@user.limits.last.events_per_day_reached.increment!
elsif
@limit = Limit.new(user_id: @user.id)
@limit.increment(:events_per_day_reached)
@limit.save
end
我只是不知道编写这些查询的最"Rails"的方法。
问题是updated_at
列是日期时间,但与日期比较
其中一个解决方案是将日期时间转换为日期:
@user.limits.last.updated_at.to_date == Date.today
或者(可能更优雅(今天有ActiveSupport::TimeWithZone#?方法,它做到了诀窍:
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
此外,条件块应该是
if @user.limits.last.updated_at.to_date == Date.today
your code.....
else
your code.....
end
elsif
采用参数