我想向用户显示他们目前还不是其中成员的所有组。当用户至少在一个组中时,下面的工作正常:
Group.find(:all, :conditions => ['id not in (?), @groups.map(&:id)])
当用户在 0 个组中时失败,并且 @groups.map(&:id)
为 null .. 如何更新以上内容以支持@groups.map 时的用例(&:id) 在 ruby on rails 中为 null/nill?
谢谢
最佳答案
Rails 3 包含 ARel,可让您构建分段函数。这在这种情况下非常方便。
scope = Group
group_ids = @groups.map(&:id)
scope = scope.where(['id not in (?)', group_ids]) unless group_ids.empty?
scope.all
如果有要排除的组 ID,这将只包含 NOT IN
条件。当要排除的组为空时,它不会将其包含在查询中。
关于ruby-on-rails - Rails 在 ID NOT IN 条件下查找,如何支持映射的空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9844411/