减少if语句以生成mongoid查询

时间:2015-09-23 13:24:18

标签: ruby-on-rails ruby if-statement mongoid

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

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

where不是client_bank_account_id时,我只需要nil来电。

2 个答案:

答案 0 :(得分:1)

不是很短,但我说它更具可读性:

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

答案 1 :(得分:0)

这取决于,您是否需要“最短代码”代码高尔夫风格,或者只是最好的,可能更简单的阅读代码。

我会选择:

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

注意:

  • 你不需要'自我'。
  • nil check可能不是最佳方式。
  • 延迟加载应该停止对此处的数据库进行两次调用