我有一个具有以下模型的rails应用程序:
User (id)
Version (id, post_id, creator_id)
Post (id)到目前为止,设置如下:
User.rb:
has_many :versionsVersion.rb:
belongs_to :creator, :class_name => "User"
belongs_to :postPost.rb:
has_many :versions现在,我想将一个用户链接到他通过versions发布的帖子,最糟糕的是,这种连接必须被称为问题。我在想这样的事情:
添加到User.rb中:
has_many :questions, :class_name => "Post", :source => :post, :through => :versions问题是这样做不起作用,而且可能不应该这样做,因为它不知道版本表中用户密钥的名称。
错误消息:
SQLite3 3::SQLException:没有这样的列: versions.user_id:从"posts“内部联接版本中选择计数(*)。”id“=”post_id“,其中有”user_id“。”user_id“=1。
,我迷路了,救命!
注:唯一不起作用的关系是最后一段users <==> posts a.k.a users.questions
发布于 2011-11-20 16:31:46
此设置应该适用于您:
user.rb
has_many :versions, :foreign_key => 'creator_id'
has_many :questions, :through => :versionsversion.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
https://stackoverflow.com/questions/8174543
复制相似问题