我对连接表有以下查询,效果很好:
@eventsmy = Event.find(
:all,
:joins => :rsvps, :conditions => {:rsvps => { :user_id => current_user.id }})
我还希望有另一个查询完全相反。即,查找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! }})
答案 0 :(得分:3)
请记住,所有这一切都是找到其他用户已经回复的所有活动,因此我认为您没有以正确的方式接近这个......
这就是你要求的:
@eventsmy = Event.joins(:rsvp).where('rsvps.user_id != ?', current_user.id)
我认为你真正需要的是......如果你想找到当前用户被邀请但尚未回复的事件,那么你需要做类似的事情:
# 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为false
)。