我有一个方法select_active_buildings
有三个参数,默认为nil
来使用提供的信息过滤我的数据库。重构可选参数删除`if`语句的方法
def select_active_buildings(category:nil, upgrader:nil, upgrade_resource:nil)
my_active_buildings = self.buildings.active(self.townhall_level)
if category && upgrader && upgrade_resource
return my_active_buildings.where(category:category, upgrader:upgrader, upgrade_resource:upgrade_resource)
elsif category && upgrader
return my_active_buildings.where(category:category, upgrader:upgrader)
elsif category && upgrade_resource
return my_active_buildings.where(category:category, upgrade_resource:upgrade_resource)
elsif upgrader && upgrade_resource
return my_active_buildings.where(upgrader:upgrader, upgrade_resource:upgrade_resource)
elsif category
return my_active_buildings.where(category:category)
elsif upgrader
return my_active_buildings.where(upgrader:upgrader)
elsif upgrade_resource
return my_active_buildings.where(upgrade_resource:upgrade_resource)
else
return my_active_buildings
end
end
我需要帮助重构此方法。
这个问题将在http://codereview.stackexchange.com/ –
更好这个问题可能是适用于[代码审查(http://codereview.stackexchange.com/help)只要(a)您的代码按预期工作,(b)您的代码是真实的代码,而不是示例代码,并且(c)您的代码包含在问题的正文中。如果您希望通过同行评审来改进代码的各个方面,请将其发布在代码评审中。 – Phrancis
谢谢,你是对的。 – thedanotto