我的帐户模型上有这段代码。
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的默认参数。有人可以提供一点推动吗?
答案 0 :(得分:0)
您可以简单地为块参数提供默认值:
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
。