Rails查询连接表不等于数据

时间:2011-12-02 10:15:46

标签: ruby-on-rails-3 datatable

我对连接表有以下查询,效果很好:

@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! }})

1 个答案:

答案 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)。