0

在 Rails 中有两种方法可以增加属性:

实例级:http ://apidock.com/rails/ActiveRecord/Base/increment !
类级:http ://apidock.com/rails/ActiveRecord/Base/increment_counter/class

我想更新我的帖子模型上的计数器属性,以保存帖子的评论数。

两者中的任何一个更适合我的用例吗?

我会将它与 PostgreSQL 数据库一起使用。

4

2 回答 2

2

出于您的目的,我认为您应该使用:counter_cacheAR 关联中的属性。例如:

class Comment < ActiveRecord::Base
  # cached value will stored into the comments_count column at posts table
  belongs_to :post, counter_cache: true
end

class Post < ActiveRecord::Base
  has_many :comments
end

Rails 会在你不注意的情况下做很多工作。

对于您上面提到的两种方法(increcement_counterincresement),它们用于不同的目的。是increcement_counter后背魔法counter_cache。的incresement用途只是增加表中的一些整数值。

于 2014-11-21T15:35:23.033 回答
0

实例#increment_counter:更多 oop,并运行#update_all(快速且无需验证)。

于 2014-11-21T15:19:49.643 回答