1
我有一个结构,它是不是一个真正的has_many :through
例子,但我想它表现得像一个:的has_many:通过当连接表中不包含FK两个表
# user.rb
belongs_to :blog
has_many :posts
# post.rb
belongs_to :user
# blog.rb
has_many :users
has_many :posts, :through => :users # this obviously doesn't work becase
# both FKs aren't in the blogs table
我想获取数组中博客的所有帖子。我知道我可以用Ruby来做到这一点,使用each
或喜欢collect
,但我想让SQL来完成这项工作。
有人能解释一下,我可以如何设置我的模型,让我可以使用SQL和Ruby来调用@ blog.posts,并解释哪种方式更“好”?
编辑:
我知道在SQL我可以写这样的:
SELECT * FROM posts WHERE posts.user_id IN (
SELECT users.id FROM users WHERE users.blog_id = 7
)
这显然表明,需要两个查询。我不认为这是可能的与join
,但我不完全确定。很明显,需要一个子查询,但我如何获得rails来使用ARel构建子查询,而不必返回并使用Ruby进行循环和收集等等。
这个工作,如果我访问其他关系的职位?就像我需要做post.versions(另一张桌子)和其他东西.. – sethvargo 2011-01-14 03:01:19