0
명명 된 범위를 통해 조인에 param을 바인딩하려고하는데 오류가 발생합니다.컨트롤러에서 모델 조건으로 매개 변수를 전달하십시오.
올바른 방법은 무엇입니까?
Idea.with_vote(request.ip).all
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
나는 그것이
의 ON 절에 나타날 때까지 나는 하나보다는, 가입 모델의 조건 정의를 필요로 생각합니다.
편집는 나는 당신이 관련 불완전한 조건을 사용할 수 있다고 생각하지 않습니다 다음 쿼리
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? 당신의 깃발이 될 것입니다 :) –