2

伙计们怎么了?

我在我的项目中创建了一个迁移,将“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

我的本地主机再次工作。(我只收到错误消息:“我们很抱歉,但出了点问题。”)。

有人知道发生了什么吗?

4

1 回答 1

3

我发现了问题。

has_many 不能有 ":counter_cache" 参数,这个参数只适用于 "belongs_to"。

我去模型“like”并在“belongs_to”中插入“counter_cache”:

belongs_to :post, :counter_cache => :likes_count

关于“has_many :likes”,我保持原样:

has_many :likes, :as => :important

多谢你们...

于 2013-05-03T17:32:10.397 回答