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