我怎样才能重构这个if / else语句?

时间:2011-09-08 15:03:32

标签: ruby-on-rails ruby refactoring

这是if / else语句:

if number.events.blank?
  Resque.enqueue(ProcessNumbers, number.id)
elsif number.events && !number.events.ordered.first.status.downcase.include? 'delivered'
  Resque.enqueue(ProcessNumbers, number.id)
end

最终试图说:“如果number.events为空,请运行enqueue。或者如果number.events.ordered.first.status.downcase.include包含'已发送'(但请确保number.events确实有某些内容)。 “

2 个答案:

答案 0 :(得分:2)

我不是Ruby开发人员,但似乎您number.events中的elsif检查是多余的,因为您的代码只会“落到”elsif的情况下number.events不是空白。由于你有一个if...or的情况,更简洁的方式可能是:

if number.events.blank? || !number.events.ordered.first.status.downcase.include? 'delivered'
    Resque.enqueue(ProcessNumbers,number.id)

答案 1 :(得分:0)

或者,

if !number.events.blank? && !number.events.ordered.first.status.downcase.include? 'delivered'
    Resque.enqueue(ProcessNumbers, number.id)

这将确保number.events确实有某些东西。