ruby-on-rails - Rails 在 ID NOT IN 条件下查找,如何支持映射的空值?

标签 ruby-on-rails ruby ruby-on-rails-3

我想向用户显示他们目前还不是其中成员的所有组。当用户至少在一个组中时,下面的工作正常:

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/

相关文章:

ruby-on-rails - rails : Routing Error: uninitialized constant SessionController

ruby-on-rails - 分析文本以在 Rails 中自动创建标签

ruby-on-rails - 使用rails中lib目录中的类函数

ruby-on-rails - 每当 gem 只在一台机器上有 cronjob 时?

ruby-on-rails - Mongoid3/助力车 : database=admin command={:ismaster=>1}

ruby-on-rails - 当 "views"应设置为 RoR 中的条件时,条件(if/else)的语法?

javascript - 带 Rails 的 Stripe 4 : This customer has no attached payment source

ruby-on-rails - 设计向任何电子邮件 ID 发送忘记密码的说明

ruby-on-rails-3 - Rails 3 从另一个 Controller 渲染 Action

javascript - 使用 Ajax 更新 Rails 中的元素