0

是否可以使用 '.where()' 控制器方法来选择所有不等于由 ID 号组成的数组的 db 元素?

我可以轻松地使用 '.where()' 控制器方法来选择与存储在数组中的 ID 号列表相等的所有 db 元素:

user_event_ids = current_user.event_items.pluck(:event_id)

@user_events = Event.where(id: user_match_ids)

但我似乎无法找到一种方法来选择所有 ID 号不在“user_event_ids”数组中的 db 元素。

我试过(没有运气):

@non_user_events = Event.where('user_id not in :arr', {arr: user_event_ids})

@non_user_events = Event.where(''user_id != ?', user_event_ids)

两者都不起作用并因错误而取消。任何帮助表示赞赏!

4

3 回答 3

1

这应该是您所追求的正确语法:

Event.where('user_id NOT IN (?)', user_event_ids)
于 2013-07-30T21:51:54.520 回答
0

Givenexcluded_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}
于 2013-07-30T22:48:41.460 回答
0

这是另一种语法:

Event.find(:all, :conditions => ['user_id not in (?)', user_event_ids])
于 2013-07-30T21:56:42.783 回答