Ruby on rails 3 数据不等于的联接表的Rails查询
我使用join table进行了以下查询,效果非常好: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 =&
@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
)。您在查询中发现了我的逻辑错误!谢谢:)我应该可以用你的第二种方法解决它。