非常によく似たコントローラーメソッドがいくつかあり、それらをリファクタリングするための最良の方法は何でしょうか。最初に頭に浮かぶのは、どういうわけか2つのブロックをヘルパーメソッドに渡すことですが、それを行う方法もわかりません。
def action_a
if @last_updated.nil?
@variable_a = @stuff_a
else
@variable_a = (@stuff_a.select{ |item| item.updated_at > @last_updated }
end
end
def action_b
if @last_updated.nil?
@variable_b = @stuff_b.some_method
else
@variable_b = @stuff_b.some_method.select{ |stuff| item.updated_at > @last_updated }
end
end
@last_updated
常にnilかどうかをチェックしているようです(@last_updated
インスタンス変数をブロックとして設定しますbefore_filter
。どういうわけか、内部のものをif
ブロックとして渡し、内部のものを別のブロックとして渡すことができれば、重複else
を削除できますか?if @last_updated.nil?
多くの方法でこれを達成するための最良の方法は何ですか?
アップデート
とを指定する@stuff_a
と@stuff_b
、常に配列が返されます(を使用しているため.select
)。