首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从comment.rb向answers_watchers表添加用户

从comment.rb向answers_watchers表添加用户
EN

Stack Overflow用户
提问于 2013-04-22 03:49:27
回答 1查看 36关注 0票数 3

我在我的Rails应用程序的Answer.rb模型中有以下代码。在用户发布了答案(对问题)之后,他们会被添加到一个列表中,如果在答案上发布了评论,则会收到通知。

Answer.rb

代码语言:javascript
复制
 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实例中,而不是类中,尽管我不完全确定如何做到这一点。下面的代码都被破坏了。我只是在试着玩弄它是如何工作的,但没有成功。

在我的comment.rb模型中,我添加了这段代码,它将把用户传递给答案模型中的add_to_watchers方法

comment.rb

代码语言:javascript
复制
 after_create :creator_watches_me
      private 

  def creator_watches_me
    Answer.add_to_watchers(user)
  end 

在Answer.rb模型中,我有这个

代码语言:javascript
复制
  def add_to_watchers(user)
    self.watchers << user
  end 

但现在我根本不能添加任何评论。我得到了这个错误

代码语言:javascript
复制
undefined method `add_to_watchers' for #<Class:0x007faead33f7f8>

我猜我可能遇到的一个问题是,我不知道如何从评论模型引用答案的实例,也不知道如何将该实例传递给Answer.rb,以便它知道应该将用户添加到哪个答案。当然,这可能是完全错误的:(我已经阅读了一些关于实例和类方法的博客文章,但我在代码中很难解决它,如果这就是我遇到的问题的话。

所以你知道,答案和评论是有联系的。Answer.rb has_many :评论。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-22 03:57:47

正如我所说的,您是在Answer类上调用add_to_watchers,而不是在相关的Answer实例上调用,并且该方法不是由Class类实现的。这就是你得到这个错误的原因。

我猜你有一个从评论到答案的关联,如下所示:

代码语言:javascript
复制
belongs_to :answer

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

代码语言:javascript
复制
def creator_watches_me
  answer.add_to_watchers(user)
end 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16135477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档