首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails多模型关联

Rails多模型关联
EN

Stack Overflow用户
提问于 2011-11-17 21:26:38
回答 1查看 1.3K关注 0票数 2

我有一个具有以下模型的rails应用程序:

代码语言:javascript
复制
User (id)
Version (id, post_id, creator_id)
Post (id)

到目前为止,设置如下:

User.rb:

代码语言:javascript
复制
has_many :versions

Version.rb:

代码语言:javascript
复制
belongs_to :creator, :class_name => "User"
belongs_to :post

Post.rb:

代码语言:javascript
复制
has_many :versions

现在,我想将一个用户链接到他通过versions发布的帖子,最糟糕的是,这种连接必须被称为问题。我在想这样的事情:

添加到User.rb中:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-20 16:31:46

此设置应该适用于您:

user.rb

代码语言:javascript
复制
has_many :versions, :foreign_key => 'creator_id'
has_many :questions, :through => :versions

version.rb

代码语言:javascript
复制
belongs_to :creator, :class_name => "User"
belongs_to :question, :class_name => "Post", :foreign_key => 'post_id'

post.rb

代码语言:javascript
复制
has_many :versions

现在您可以访问这样的问题:User.first.questions

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8174543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档