什么人?
我在项目中创建了一个迁移,将“likes_count”列添加到Post:
def self.up
add_column :posts, :likes_count, :integer, :default => 0
Post.all().each do |post|
post.update_attribute(:likes_count, post.likes.count)
post.save
end
end
def self.down
remove_column :posts, :likes_count
end
嗯,看起来很有效,但是当我尝试在我的模型中添加“counter_cache”时,我遇到了麻烦。看:
has_many :likes, :counter_cache => true, :as => :important
是的,我在没有“:counter_cache => true”的情况下运行迁移,只有在此迁移之后才添加此命令。奇怪的是,如果我做了像
这样的事情has_many :likes, :as => :important, #:counter_cache => true
我的localhost再次运作。 (我只得到错误:“我们很抱歉,但出了点问题。”)。
有人知道发生了什么事吗?
答案 0 :(得分:3)
我发现了问题。
has_many不能有“:counter_cache”参数,此参数仅适用于“belongs_to”。
belongs_to :post, :counter_cache => :likes_count
关于“has_many:likes”,我离开了它的方式:
has_many :likes, :as => :important
谢谢你们......