我写了一个辅助方法,以在街道地址城市转化成其相应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