我的應用程序有Question
型號has_many
UserResponse
型號。Rails 3:如何加載一個關聯,並使用includes()應用一個條件?
我想獲得特定User
已回答的最後5個問題,並在user_id
字段中過濾了相關聯的UserResponse
對象。
這是我目前有:
Question.group("questions.id").
joins("inner join user_responses r on r.question_id = questions.id").
where("r.user_id = #{user_id}").
order("questions.id asc").limit(5)
該查詢給我回來,我想要什麼,但問題是,當我得到一個Question
出數組並做question.user_responses
結果是所有響應的這個問題,而不僅僅是那些應該由上面的join/where子句過濾的問題。
我試着這樣做:
Question.includes(:user_responses).group("questions.id").
joins("inner join user_responses r on r.question_id = questions.id").
where("r.user_id = #{user_id}").
order("questions.id asc").limit(5)
以爲它會急於負載每個響應...但它似乎並沒有發揮作用的方式。
我哪裏錯了?
如果它有所不同,我需要所有急切加載的原因是因爲我想獲取數組並調用to_json並從我的移動應用程序的Web服務返回json,所以我需要整個圖形可用。
你爲什麼試圖在這裏組? – rwilliams