我的帐户模型中有这段代码。
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/