我的课程有以下Collection个范围:

scope :with_missing_coins, joins(:coins).where("coins.is_missing = ?", true)

我可以跑Collection.with_missing_coins.count,然后得到结果——效果很好!

scope :without_missing_coins, joins(:coins).where("coins.is_missing = ?", false)

我发现自己写了很多"相反"的范围.在不牺牲可读性或使用lambda/方法(以truefalse为参数)的情况下,是否有可能得到范围的相反结果?

比如:

Collection.!with_missing_coins

推荐答案

我不会使用一个单一的作用域,但有两个:

scope :with_missing_coins, joins(:coins).where("coins.is_missing = ?", true)
scope :without_missing_coins, joins(:coins).where("coins.is_missing = ?", false)

这样,当使用这些作用域时,就会明确发生了什么.根据数字1311407的建议,目前还不清楚falsewith_missing_coins的参数在做什么.

我们应该尽可能清晰地编写代码,如果这意味着不那么热衷于干一次,那就这样吧.

Ruby-on-rails相关问答推荐

链轮轨道V4链接到外部Ruby 的 list 文件

SASS,Rails 7:找不到要导入的样式表

Rails 7,返回具有两个单独条件的活动记录关联,一个在父级,一个在子级

为什么在使用 Ruby on Rails 时我的徽标没有出现在 Bootstrap 导航栏中?

Rails 使用多个外键创建/构建

如何使用 Vim 插入 ERB 标签?

为什么在保存对象后使用重新加载方法? (Hartl Rails Tut 6.30)

如何避免 RSpec 3.0 中 stub_chain 的弃用警告?

如何避免 has_many :through 关系中的重复?

默认情况下,如何在 Rails 中使 cookie 安全(仅限 https)?

在 Ruby on Rails 上,我们如何在控制器中打印调试信息?

在 Epoch 中将 Ruby 时间戳转换为秒数并返回

Rails 5:无法从参数中检索哈希值

在 ruby​​ on rails 中创建自定义 html 助手

你如何覆盖 form_for 助手中的类名?

rbenv:没有 gemsets 生存

如何在 Rails 中设置路由的默认格式?

使用 Rspec 测试关联的正确方法?

如何在 Rails 表单中将复选框和标签保持在同一行?

如何从 ApplicationHelper 调用 ApplicationController 方法