Rails-запрос для таблицы соединений с не равными данными - PullRequest
1 голос
/ 02 декабря 2011

У меня есть следующий запрос с таблицей соединений, который прекрасно работает:

@eventsmy = Event.find( 
:all, 
:joins => :rsvps, :conditions => {:rsvps => { :user_id => current_user.id }})

И я также хотел бы иметь другой запрос, который делает прямо противоположное.то есть, найти все строки событий, которые не rsvped current_user.Я получаю сообщение об ошибке:

@eventsother = Event.find(
:all, 
:joins => :rsvps, :conditions => {:rsvps => :conditions => {["user_id != ?", current_user.id]} })

Это также дает ошибку:

@eventsother = Event.find(
:all, 
:joins => :rsvps, :conditions => {:rsvps => :conditions => current_user.id! }})

1 Ответ

3 голосов
/ 02 декабря 2011

Имейте в виду, что все, что это делает, - это нахождение всех событий, на которые другие пользователи имеют RSVP, так что я не думаю, что вы подходите к этому правильному пути ...

Это то, что вы просите:

@eventsmy = Event.joins(:rsvp).where('rsvps.user_id != ?', current_user.id)

Я думаю, что вам действительно нужно ... Если вы хотите найти события, на которые текущий пользователь был приглашен, но не имеет RSVP, то вам нужно сделать что-то вроде:

# RSVP Table:
:id => primary_key
:event_id => integer
:user_id => integer
:rsvp => boolean

И тогда вы можете сделать:

@eventsmy = Event.joins(:rsvp).where('rsvps.user_id = ? AND rsvps.rsvp = ?', current_user.id, false)

Который найдет все события для текущего пользователя, к которым у текущего пользователя нет RSVP'd (поскольку RSVP равен false).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...