在不更新时间戳的情况下将字段增加一定数量

时间:2018-10-22 10:20:48

标签: ruby-on-rails ruby

在他创建User之后,我必须更新Post模型的User.find(id).increment!(reputation: 10) 属性。 到目前为止,这是我尝试过的:

简单的解决方案是:

updated_at

但是,这也会更新User.increment_counter(:reputation, id) 字段。

我寻找一种无需更新时间戳即可更新计数器的方法,发现了这一点:

reputation

但是此方法将update_column加1。

我还发现Post方法不会更新时间戳。 但是,我似乎无法将其用作单行查询。

是的,我必须在用户创建帖子后更新其声誉。因此,在我的after_create_commit { self.user.update_column(reputation: (self.user.reputation + 10))} 模型中,

self.user

此查询调用update_counters(以获取当前帖子的关联用户)2次,如何避免这种情况。

OR

还有没有其他方法可以增加而不更新时间戳。

谢谢

更新

找到了一种解决方案,self.user方法(在下面的答案中添加)。

如果有人知道任何其他方法,或者可以在不两次调用{{1}}的情况下帮助我如何使用update_column,请帮助我。 谢谢

1 个答案:

答案 0 :(得分:2)

没关系,找到了解决方案。因此,显然,update_counters方法正在完全满足我的需求。

User.update_counters :id,:reputation => 10

谢谢。

链接:Rail Update Counters method