0
我試圖通過命名作用域將連接綁定到連接,但是出現錯誤。從控制器傳遞參數到模型條件
這樣做的正確方法是什麼?
class Idea < ActiveRecord::Base
#relations
has_many :votes, :inverse_of => :idea
has_one :has_voted, :class_name => 'Vote', :conditions => ['ip = :ip']
# named scopes
scope :with_vote, lambda {|ip| {
:include => [:has_voted],
# like this ??
:conditions => [:has_voted => {:conditions => {:userIp => ip}} ]
}}
end
Idea.with_vote(request.ip).all
我相信我需要在模型中的條件定義爲它出現的ON子句中JOIN,而不是在WHERE之一。
編輯我試圖讓下面的查詢
select Ideas.*, Votes.* from Ideas
left outer join Votes
on Votes.Idea_id = Idea.id AND Votes.ip = {request.ip}
我想**所有**的想法和一個標誌,指示當前用戶是否投了票。 – Alex
在這種情況下,我收到以下查詢: 'SELECT ... FROM「ideas」LEFT OUTER JOIN「ideas_votes」ON「ideas_votes」。「idea_id」=「ideas」。「id」WHERE(votes.ip = '127.0.0.1')' 和ip出現在哪裏,而不是** ON **子句 – Alex
看到我的更新,現在是idea.votes.empty?將是你的國旗:) –