是否可以使用'.where()'控制器方法选择不等于的所有db元素到包含ID号的数组?
我可以轻松地使用'.where()'控制器方法来选择所有与数组中存储的ID号列表相等的db元素:
user_event_ids = current_user.event_items.pluck(:event_id)
@user_events = Event.where(id: user_match_ids)
但我似乎无法找到一种方法来选择所有在'user_event_ids'数组中包含ID编号的db-elements。
我尝试过(没有运气):
@non_user_events = Event.where('user_id not in :arr', {arr: user_event_ids})
@non_user_events = Event.where(''user_id != ?', user_event_ids)
两者都不起作用并取消错误。任何帮助表示赞赏!
答案 0 :(得分:1)
这应该是您所追求的正确语法:
Event.where('user_id NOT IN (?)', user_event_ids)
答案 1 :(得分:0)
这是另一种语法:
Event.find(:all, :conditions => ['user_id not in (?)', user_event_ids])
答案 2 :(得分:0)
鉴于excluded_ids
是一个包含您要排除的ID的数组
如果您使用的是Rails 4:
Event.where.not(user_id: excluded_ids)
如果您使用的是Rails 3:
Event.where('user_id NOT IN (?)', user_event_ids)
如果您使用Squeel
Event.where{user_id.not_in excluded_ids}