我正在使用 Ruby on Rails 3.2.2,我想将计数器缓存值设置为“自定义”值。也就是说,此时(在我的迁移文件中)我正在尝试使用以下代码:
def up
add_column :articles, :comments_count, :integer, :default => 0
Article.reset_column_information
Article.find_each do |article|
# Note: The following code doesn't work (when I migrate the database it
# raises the error "comments_count is marked as readonly").
Article.update_column(:comments_count, article.custom_comments.count)
end
end
换句话说,我想将:comments_count
值(计数器缓存数据库表列)设置为自定义值(在我的情况下,该值是article.custom_comments.count
-注意:这custom_comments
不是 ActiveRecord 关联,而是Article
模型类中声明的方法;它返回一个整数值),与关联无关has_many
。
也许,我可以/应该使用类似的东西
Article.reset_column_information
Article.find_each do |article|
Article.reset_counters(article.id, ...)
end
但似乎该方法没有关联reset_counters
就无法工作。has_many
如何将:comments_count
计数器缓存值设置为与“自定义关联”相关的给定值?