我正在運行Ruby on Rails 3.1。我想通過應用一些條件來加載「二級」關聯對象,但是我遇到了麻煩。急於加載「二度」關聯對象的問題
看來,我已經通過解決part of my issue:
article_categories =
article
.categories
.includes(:comments => [:category_relationships])
.where(:category_relationships => {:user_id => @current_user.id})
,其中涉及的類別列示如下:
class Category < ActiveRecord::Base
has_many :comment_relationships
has_many :comments,
:through => :comment_relationships
...
end
class Comment < ActiveRecord::Base
has_many :category_relationships
has_many :categories,
:through => :category_relationships
...
end
上面的代碼(似乎做是正確的):
- 加載全部
categories
關懷has_many :through
:category_relationships
關聯(即關注.where(:category_relationships => {:user_id => @current_user.id})
條件); - 急切加載全部
article.comments.where(:user_id => @current_user.id)
。
然而,我想提出一些更多:
- 到順序由
:position
檢索categories
在category_relationships
本屬性使得所得article_categories
是通過位置排序的; - 到渴望加載也
category_relationship
對象其中user_id == @current_user.id
因爲上面的代碼沒有這樣做。
我怎麼能作出這樣採取從預先加載的優勢呢?
是否有一個原因爲什麼你在'Category'和'Comment'之間使用兩個不同的連接表? – amencarini 2012-04-05 20:56:48