首页 > 解决方案 > 将字段增加一些数字而不更新时间戳

问题描述

在他创建reputation一个. 这是我到目前为止所尝试的:UserPost

简单的解决方案是:

User.find(id).increment!(reputation: 10)

但是,这也更新了该updated_at字段。

我寻找一种在不更新时间戳的情况下更新计数器的方法,发现了这个:

User.increment_counter(:reputation, id)

但是这个方法加reputation1。

我还发现该update_column方法不会更新时间戳。但是,我似乎不能将它用作单行查询。

因为,我必须在用户创建帖子后更新他的声誉。所以,在我的Post模型中,

after_create_commit { self.user.update_column(reputation: (self.user.reputation + 10))} 

此查询正在调用self.user(获取当前帖子的关联用户)2 次,我该如何避免这种情况。

或者

有没有其他方法可以在不更新时间戳的情况下增加。

谢谢

更新:

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

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

标签: ruby-on-railsruby

解决方案


没关系,找到了解决方案。所以,显然,update_counters方法正是我需要的。

User.update_counters :id,:reputation => 10

谢谢。

链接:铁路更新计数器方法


推荐阅读