Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 数据不等于的联接表的Rails查询_Ruby On Rails 3_Datatable - Fatal编程技术网

Ruby on rails 3 数据不等于的联接表的Rails查询

Ruby on rails 3 数据不等于的联接表的Rails查询,ruby-on-rails-3,datatable,Ruby On Rails 3,Datatable,我使用join table进行了以下查询,效果非常好: @eventsmy = Event.find( :all, :joins => :rsvps, :conditions => {:rsvps => { :user_id => current_user.id }}) 我还想提出另一个与此完全相反的问题。i、 例如,查找当前用户未RSVP的所有事件行。我得到一个错误,原因如下: @eventsother = Event.find( :all, :joins =&

我使用join table进行了以下查询,效果非常好:

@eventsmy = Event.find( 
:all, 
:joins => :rsvps, :conditions => {:rsvps => { :user_id => current_user.id }})
我还想提出另一个与此完全相反的问题。i、 例如,查找当前用户未RSVP的所有事件行。我得到一个错误,原因如下:

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

请记住,所有这一切所做的是寻找所有事件,其他用户有RSVP的,所以我不认为你是接近这一正确的方式

这就是你想要的:

@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的所有事件(因为RSVP为
false
)。

您在查询中发现了我的逻辑错误!谢谢:)我应该可以用你的第二种方法解决它。