在Rails中增加属性有两种方法:
实例级别:http://apidock.com/rails/ActiveRecord/Base/increment!
班级:http://apidock.com/rails/ActiveRecord/Base/increment_counter/class
我想在Post模型上更新一个计数器属性,以保存帖子的评论数量。
对于我的用例,这两个中的任何一个更好吗?
我会将它与PostgreSQL数据库一起使用。
答案 0 :(得分:2)
出于您的目的,我认为您应该在AR关联中使用:counter_cache
之类的属性。例如:
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
用于增加表中的某个整数值。
答案 1 :(得分:0)
实例 #increment_counter :更多oop,并运行 #update_all (快速且无需验证)。