我寫了一個輔助方法,以在街道地址城市轉化成其相應FIPS地方代碼:如何使此方法更高效?
def place_fips
place_fips = 'PLACE:' + Place.where(statename: @address.state, placeshort: @address.city).first.placefp
end
我現在想在其它幾種方法,這爲城市獲取人口統計數據,以使用「place_fips」 :
def city_pop_tot
str = @census.where({ fields: 'P0030001', level: place_fips })[0]["P0030001"].to_i
end
我現在有關於這些city_pop_foo
方法7(每個種族分類,例如,city_pop_white
,city_pop_black
,city_pop_asian
等)
這一切工作罰款,但響應時間太長,因爲它每次遇到city_pop_foo
方法之一運行place_fips
查詢。有沒有辦法一次性定義place_fips
,並在後續的方法中使用它,而不必每次都從數據庫中獲取它?
而且,我懷疑有一個辦法,而不是有幾個def city_pop_foo
方法乾燥此代碼,只要定義def city_pop
一次,然後傳遞參數,將在@census.where
查詢改變P00####
(這樣我就可以寫的東西像<%= city_pop(white) %>
,<%= city_pop(black) %>
,<%= city_pop(asian) %>
等在我看來)。我在正確的軌道上嗎?這可能是什麼樣子?
這個問題似乎是題外話題,因爲它是關於需要重構的工作代碼,這更適合http://codereview.stackexchange.com/。 – 2014-09-23 04:33:07