在 Rails 中有两种方法可以增加属性:
实例级:http ://apidock.com/rails/ActiveRecord/Base/increment !
类级:http ://apidock.com/rails/ActiveRecord/Base/increment_counter/class
我想更新我的帖子模型上的计数器属性,以保存帖子的评论数。
两者中的任何一个更适合我的用例吗?
我会将它与 PostgreSQL 数据库一起使用。
在 Rails 中有两种方法可以增加属性:
实例级:http ://apidock.com/rails/ActiveRecord/Base/increment !
类级:http ://apidock.com/rails/ActiveRecord/Base/increment_counter/class
我想更新我的帖子模型上的计数器属性,以保存帖子的评论数。
两者中的任何一个更适合我的用例吗?
我会将它与 PostgreSQL 数据库一起使用。
出于您的目的,我认为您应该使用:counter_cache
AR 关联中的属性。例如:
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_counter
和incresement
),它们用于不同的目的。是increcement_counter
后背魔法counter_cache
。的incresement
用途只是增加表中的一些整数值。
实例#increment_counter:更多 oop,并运行#update_all(快速且无需验证)。