Rails:如果今天发生了事件,请增加db列;如果没有,请创建新条目

时间:2018-07-17 11:56:15

标签: ruby-on-rails

我对应用程序中的每日用户操作设置了限制,我想跟踪用户每天有多少时间达到限制。

我有一个属于+的{​​{1}}模型,并且极限表有两列:LimitUser

限量型号:

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”方式。

2 个答案:

答案 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接受争论