我有一个带有以下型号的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
答案 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