Ruby on rails 从comment.rb向answers\u watchers表添加用户

Ruby on rails 从comment.rb向answers\u watchers表添加用户,ruby-on-rails,ruby,Ruby On Rails,Ruby,我在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

我在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 
在Answer.rb模型中,我有这个

  def add_to_watchers(user)
    self.watchers << user
  end 
def添加到观察者(用户)

self.watchers正如我所想,您正在调用
Answer
类上的
add_to_watchers
,而不是相关的Answer实例,并且该方法不是由
类实现的。这就是为什么会出现错误

我猜你从评论到回答都有关联,比如:

belongs_to :answer
在这种情况下,您可以使用
Answer
引用相关的答案实例,因此请尝试:

def creator_watches_me
  answer.add_to_watchers(user)
end 

@fmendez我认为
add_to_watchers
需要是一个实例方法,因为它引用了
watchers
实例方法。@Steve啊,好的一点:)我没有意识到如果定义了关联,我可以从注释模型中调用“answer”。感谢活动记录关联帮助程序,如
有许多
属于
生成方法,如
注释
应答
应答=
belongs_to :answer
def creator_watches_me
  answer.add_to_watchers(user)
end