我搜索了很多,但不能理解这个。
我有一个与其他三个模型相关的模型。我们称之为城市。城市确实有一个大陆,一个国家和地区。
当我选择一些城市时,我想找回一个OrderedHash或一个看起来像这样的数组:
{ 'Continent 1' => {'Country 1' => { 'Region 1' => { 'City 1', 'City 2' }}}, 'Continent 2' ...}
我该怎么做?
答案 0 :(得分:6)
只按地区分组:
cities_by_region = City.all(:group => :region)
# set up an automatic 3-level hash...
result = Hash.new { |h,k| h[k] = Hash.new { |h,k| h[k] = {}}}
cities_by_region.each do |region, cities|
country = region.country
result[country.continent.name][country.name][region.name] = cities
end
请注意,这不使用排序,但可以很容易地进行调整。请记住,哈希的插入顺序仅保留在Ruby 1.9 +。
中