ruby-on-rails - 如何将默认参数传递给 Rails lambda/scopes?

标签 ruby-on-rails ruby lambda

我的帐户模型中有这段代码。

 scope :unverified, lambda { |limit|
  select('accounts.id, accounts.email').joins('LEFT OUTER JOIN verifications v ON v.account_id = accounts.id')
    .where('v.account_id IS NULL').limit(limit)
}

因为我的团队有严格设置的 rubocop,所以我不能按照 Rails 推荐的正常方式编写它,它看起来像这样:

scope :unverified, -> (limit = nil) { 
  select('accounts.id, accounts.email').joins('LEFT OUTER JOIN verifications v ON v.account_id = accounts.id')
    .where('v.account_id IS NULL').limit(limit)
}

以正常方式写入它会触发 rubocop 错误。我的代码接近我想要的方式,但我不知道如何为 lambda 传递默认参数。有人可以提供一点插入吗?

最佳答案

您可以简单地为 block 参数提供默认值:

scope :unverified, lambda { |limit = nil|
  select('accounts.id, accounts.email').joins('LEFT OUTER JOIN verifications v ON v.account_id = accounts.id')
    .where('v.account_id IS NULL').limit(limit)
}

但不确定将 nil 传递给 .limit() 是否有意义。您可能希望将其默认为 integer

关于ruby-on-rails - 如何将默认参数传递给 Rails lambda/scopes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35876894/

相关文章:

ruby-on-rails - 使用日常 cron 作业在 Rails 中使用使用 Ice Cube 创建的事件的正确方法

MySQL 查询分析器

mysql - 是否需要在 Ruby on Rails 中迁移数据库?

ruby-on-rails - 来自 Rails 4.2 图像缓存的特定图像将不会更新,无论我们尝试什么

ruby-on-rails - 如何遍历数组的数组

ruby - 加快 csv 导入

java - 这两种循环方式有什么区别,最好使用哪一种?

ruby-on-rails - not_analyzed无法正常工作

c++ - lambda 返回值的规范不起作用

python - 如何使用 lambda 来处理多个字典值?