Rails多模型关联

时间:2011-11-17 21:26:38

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 foreign-keys entity-relationship

我有一个带有以下型号的rails应用程序:

User (id)
Version (id, post_id, creator_id)
Post (id)

到目前为止,设置如下:

User.rb:

has_many :versions

Version.rb:

belongs_to :creator, :class_name => "User"
belongs_to :post

Post.rb:

has_many :versions

现在我想将用户链接到他通过版本表中的帖子,并且最坏的情况是这个连接必须被称为问题。我在想这样的事情:

添加到User.rb:

has_many :questions, :class_name => "Post", :source => :post, :through => :versions

问题是这不起作用,可能不应该,因为它不知道版本表中用户密钥的名称。

错误讯息:

  

SQLite3 :: SQLException:没有这样的列:versions.user_id:SELECT COUNT(*)FROM“posts”INNER JOIN“versions”ON“posts”。“id”=“versions”。“post_id”WHERE“versions” 。“user_id”= 1

我不知所措,帮助!

注意:唯一不起作用的关系是最后一个users <==> posts a.k.a users.questions

1 个答案:

答案 0 :(得分:2)

此设置应该适合您:

<强> user.rb

has_many :versions, :foreign_key => 'creator_id'
has_many :questions, :through => :versions

<强> version.rb

belongs_to :creator, :class_name => "User"
belongs_to :question, :class_name => "Post", :foreign_key => 'post_id'

<强> post.rb

has_many :versions

现在您可以访问以下问题:User.first.questions