Я пытаюсь связать параметр с соединением через именованный scope., Но я получаю сообщение об ошибке.передать параметр из состояния контроллера в состояние
Каков правильный способ сделать это?
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 пунктом в РЕГИСТРИРУЙТЕСЬ, а затем в WHERE один.
Редактировать Я пытаюсь получить следующий запрос
select Ideas.*, Votes.* from Ideas
left outer join Votes
on Votes.Idea_id = Idea.id AND Votes.ip = {request.ip}
Я хочу ** все ** идеи и флаг, указывающий, проголосовал ли за него текущий пользователь или нет. – Alex
В этом случае я получаю следующий запрос: 'SELECT ... FROM" идеи "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? будет вашим флагом :) –