我在我的Rails應用程序的我Answer.rb模型下面的代碼。在用戶發佈了問題答案後,他們會被添加到列表中,以便在答案中發佈評論時通知他們。將用戶添加到answers_watchers表從comment.rb
Answer.rb
has_and_belongs_to_many :watchers, :join_table => "answer_watchers", :class_name => "User"
after_create :creator_watches_me
private
def creator_watches_me
self.watchers << user
end
這(連同未顯示代碼)的作品,通知誰回答的問題,如果一個評論發佈給用戶。但是,如果同一用戶發表評論的回覆,我希望回覆者或其他人添加評論時通知原評論者。因此,我想添加任何人對同一個列表的答案發表評論 - 但是顯然應該爲每個答案的每個實例保留單獨的列表。這是我遇到麻煩的地方。
我假設它(新的評論者)必須添加到答案的實例而不是類,但我不完全知道如何做到這一點。下面的代碼全部壞掉了。我只是想試試如何在沒有成功的情況下運作。
在我comment.rb模式,我加入這個代碼,將用戶傳遞給方法add_to_watchers在回答模型
comment.rb
after_create :creator_watches_me
private
def creator_watches_me
Answer.add_to_watchers(user)
end
,並在Answer.rb模型,我有這個
def add_to_watchers(user)
self.watchers << user
end
但現在我不能添加評論。我得到這個錯誤
undefined method `add_to_watchers' for #<Class:0x007faead33f7f8>
一個問題我猜我可能有是我不知道如何從註釋模型參考答案的實例,以及如何向實例傳遞給Answer.rb所以它知道應該將用戶添加到哪個答案。這可能是完全錯誤的,當然:(我讀過關於實例和類方法幾篇博客,但我無法得到它在我的代碼整理出來,如果這是即使我有這個問題。
所以你知道,答案和評論之間有一個關聯Answer.rb has_many:comments
@fmendez我想'add_to_watchers'必須是一個實例方法,因爲它指的是'watchers'實例方法。 – Steve 2013-04-21 20:01:21
@Steve啊好點:) – fmendez 2013-04-21 20:32:55