我有一些非常相似的控制器方法,我想知道重构它们的最佳方法是什么。首先想到的是以某种方式将两个块传递给辅助方法,但我也不知道该怎么做。
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
实例变量设置在 a 中before_filter
。如果我能以某种方式将其中的东西if
作为一个块传递,而将其中的东西else
作为另一个块传递,那么我可以删除if @last_updated.nil?
重复项吗?
对于许多方法来说,实现这一目标的最佳方法是什么?
更新
在我指定@stuff_a
and的地方@stuff_b
,它们总是返回一个数组(因为我使用了.select
)。