减少 if 语句以生成 mongoid 查询

Reducing an if statement to generate a mongoid query

我有下面的代码,我想知道是否可以减少代码。

bank_accounts = self.client_bank_account_id.nil? ? self.client.bank_accounts : self.client.bank_accounts.where(_id: self.client_bank_account_id)

我只需要在 client_bank_account_id 不是 nil 时调用 where

并没有更短,但我认为它更具可读性:

bank_accounts = self.client.bank_accounts
bank_accounts = bank_accounts.where(_id: self.client_bank_account_id) unless self.client_bank_account_id.nil?

这取决于您是选择 'shortest code possible' 高尔夫风格的代码还是最好的、可能更容易阅读的代码。

我会选择:

bank_accounts = client.bank_accounts
bank_accounts = bank_accounts.where(_id: client_bank_account_id) if client_bank_account_id

备注:

  • 你不需要'self'。
  • 零检查可能不是最好的方法。
  • 延迟加载应该停止对数据库的两次调用