获取许多对象关联的数组

时间:2015-01-27 11:38:31

标签: ruby-on-rails ruby has-many globalize3 globalize

我不知道如何找到一个可以理解的标题,所以我会尽力解释我的问题。

我有2个型号: - 可翻译全球化的国家,名称和许多地区 - Region belongs_to country

我想做的是从一系列国家/地区制作一系列所有地区。

E.g。

Country.all.regions
Country.with_translations(I18n.locale).order("country_translations.name asc").regions

有一种简单的方法可以获得这个数组吗?

3 个答案:

答案 0 :(得分:5)

@ Octopus-Paul解决方案有效,但它有n + 1个查询问题。要避免它,请使用includes方法。

Country.includes(:regions).all.map {|country| country.regions }.flatten

在此处阅读更多内容:http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations

答案 1 :(得分:0)

来自@ Octopus-Paul:

Country.all.map {|country| country.regions }.flatten

答案 2 :(得分:0)

countries = Country.all
regions = Region.where(country: countries)