ここで、このばかばかしいほど醜いメソッドをクリーンアップしようとしています。これはリファクタリングを求めていますが、どのような構造がこれに最適なのかわかりません (つまり、case ステートメント、または単に慎重にフォーマットされたif then
ステートメント) 。
一見すると、適切に配置されたいくつかwhen
の 's を持つ case ステートメントの理想的な場所のように見えますが、私の理解では、case ステートメントは 2 つではなく 1 つの変数に対してのみ使用でき、irb をさまざまにいじることができます。ハッシュまたは配列を使用してこれらのステートメントを試すことは、ここでもあまり光を当てていません。
これをどのように行いますか?このような複数のブール値をチェックするときに、このようなコードを回避するための Ruby の一般的なトリックはありますか?
def has_just_one_kind_of_thing?(item, controller)
if (controller == 'foos' && item.widgets.blank?) || (controller == 'foos' && item.doohickeys.blank?) || (controller == 'bars' && item.widgets.blank?) || (controller == 'bars' && item.doohickeys.blank?) || (controller == 'bazes' && item.widgets.blank?) || (controller == 'bazes' && item.contraptions.blank?)
return true
else
return false
end
end