簡體   English   中英

如何將默認參數傳遞給Rails lambda / scopes?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM