更新另一个模型的属性轨道

时间:2013-08-02 22:33:52

标签: ruby-on-rails

所以我有两个模型,称之为AnimalAnimalComment。它们看起来像这样:

class AnimalComment < ActiveRecord::Base
  attr_accessible :comment, :num
end

class Animal < ActiveRecord::Base
  attr_ accessible :species, :comment
end

我在Animal中创建评论时,我希望将该评论添加到:comment模型的AnimalComment字段中。

我对此工作原理的看法是我在animals/new网页中输入评论,当我点击Submit评论获取后添加为AnimalComment网页内的字段,并且显示在那里。

希望这是有道理的。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

我不确定在两个地方存储相同的数据是否合理。也许模型应该是相关的(即Animal has_many Comments)。

在任何情况下,您的要求都可以通过回调来满足。

class Animal < ActiveRecord::Base
  attr_accessible :species, :comment
  after_save :create_animal_comment

  def create_animal_comment
    AnimalComment.create(comment: self.comment)
  end
end

after_save方法告诉Rails每次创建Animal#create_animal_comment记录时都运行Animal方法。 self.comment是指Animal模型中的评论。

答案 1 :(得分:1)

首先,创建关联。然后仅将注释保存在AnimalComment表中。使用动物模型中的delegate来访问它,或通过关联获取它。