如何在rails中链接三个模型

时间:2016-07-27 12:10:42

标签: ruby-on-rails erb

我目前有一个用户模型,追逐模型和评论模型。

用户has_many :chasings和追逐模型belongs_to :userhas_many :comments

我创建了一个迁移来添加对chasings的引用:user,所以我可以调用Chasing.user:

class AddUsersToChasings < ActiveRecord::Migration
  def change
    add_reference :chasings, :user, index: true, foreign_key: true
  end
end

所以我现在可以成功地为用户分配字符串,但是我想找到使用类似下面的选择列表向用户分配评论的最佳方法(这是选择用户进行查询的代码):

    <%= f.select :user_id, options_for_select(User.all.map {|c| [c.name, c.id]}, @chasing.user_id), { :include_blank => "Please select user"}, {:class => "form-control"} %>

如果评论已经属于追逐者,那么任何人都对我如何创建评论和用户之间的关系有任何想法?

2 个答案:

答案 0 :(得分:0)

我认为你应该能够通过chasings引用评论:

class User
  has_many :chasings
  has_many :comments, through: :chasings
end

这样您就可以访问User.first.comments,就像User.first.chasings

一样

答案 1 :(得分:0)

评论仍然需要分配给chasings,但每个评论都需要为用户分配一个用户,从用户模型中提取。为此,我将has_one :user添加到我的评论模型,并将has_many :comments添加到我的用户模型。我还运行了以下迁移来创建两者之间的关系:

class AddUsersToComments < ActiveRecord::Migration
  def change
    add_reference :comments, :user, index: true, foreign_key: true      
  end
end