我的 Rails 应用程序的 Answer.rb 模型中有以下代码。用户发布答案(对问题)后,他们会被添加到列表中,以便在对答案发布评论时收到通知。
答案.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 模型中,我添加了这段代码,它将用户传递给 Answer 模型中的方法 add_to_watchers
评论.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 的实例以及如何将该实例传递给 Answer.rb 以便它知道应该将用户添加到哪个答案. 当然,这可能是完全错误的 :( 我已经阅读了一些关于实例和类方法的博客文章,但我无法在我的代码中对其进行整理,如果这甚至是我遇到的问题的话。
所以你知道,答案和评论之间存在关联。Answer.rb has_many:评论。