Rails:如果今天发生了事件,则增加数据库列,如果没有,则创建新条目



我对应用程序中的每日用户操作有一个限制,我想跟踪用户每天达到限制的时间。

我有一个属于UserLimit模型,极限表有两列:users_per_day_reachedevents_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采用参数

相关内容

最新更新