2
我想在ActiveRecord
取景器中爲:include
選項生成的LEFT OUTER JOIN
添加附加條件。如何將附加條件添加到由include生成的JOIN?
class Post
has_many :comments
end
class Comment
belongs_to :post
has_many :comment_votes
end
class CommentVote
belongs_to :comment
end
現在讓我們說我想找到最後10個職位與他們相關的評論和最多的投票。
Post.find.all(:limit => 10, :order => "created_at DESC",
:include => [{:comments => :comment_votes])
我無法添加條件來檢查最後的投票,因爲它會忽略沒有投票的帖子。因此,條件必須轉到爲comment_votes
生成的JOIN的ON子句。我希望得到如下語法:
Post.find.all(:limit => 10, :order => "created_at DESC",
:include => [{:comments => [:comment_votes, :on => "comment_votes.vote > 0"])
你以前遇到過這樣的問題嗎?您是否設法使用當前查找器解決問題?我希望聽到來自社區的一些有趣的想法。
PS:我可以編寫連接SQL來獲得預期的結果並將結果拼接在一起。我想確保在沿着這條道路前沒有別的選擇。