[英]How can I pass a default argument to Rails lambda/scopes?
我的帳戶模型上有這段代碼。
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傳遞默認參數。 有人可以提供一點推動力嗎?
您可以簡單地為塊參數提供默認值:
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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.