如果我有一个带有lambda的作用域,它接受一个参数,这取决于参数的值,我可能知道不会有任何匹配项,但我仍然希望返回一个关系,而不是一个空数组:

scope :for_users, lambda { |users| users.any? ? where("user_id IN (?)", users.map(&:id).join(',')) : [] }

我真正想要的是一个"none"方法,与"all"相反,它返回一个仍然可以链接的关系,但会导致查询短路.

推荐答案

Rails 4中现在有一个"正确"的机制:

>> Model.none 
=> #<ActiveRecord::Relation []>

Ruby-on-rails相关问答推荐

Rails 7通过引擎将方法自动加载到控制器中的方法

Rails版本7.1.2:当验证失败且控制器发送422状态时,JS停止工作

Rails 创建自定义函数/方法以及存储位置

如何从 New Relic 交易中获取 TraceId?

如何使用 activerecord activerecord-session_store 在 Rails 应用程序中使用 cookie 值在数据库中查找会话记录

错误 NoMethodError:ActionView::Base:Class 的未定义方法 `debug_rjs='

有没有办法在 Rails 3.1 中检测用户代理

骨干model.destroy()即使工作正常也会调用错误回调函数?

如何使用 Capistrano gem 为生产数据库 seeder ?

rails4 未知编码名称 - CP720

如何更改 Heroku 应用程序的 DATABASE_URL

没有图像时如何在回形针中显示隐藏图像

在 ruby​​ on rails 上构建方法

警告:引用了顶级常量

我如何找出为什么我不能#destroy() 记录?

Rails 3 SSL 路由从 https 重定向到 http

使用 PostgreSQL 的模式和 Rails 创建多租户应用程序

您推荐哪些工具来分析 Rails 应用程序?

Ruby on Rails:Cucumber:我如何获取单个功能?

如何删除删除选项表单 activeAdmin?