我有一個方法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