2

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

我有 2 个模型: - 可通过 globalize 翻译的国家/地区,具有名称和许多地区 - Region belongs_to country

我想做的是让所有地区的数组形成一个国家数组。

例如

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

有一个简单的方法来获取这个数组吗?

4

3 回答 3

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

于 2015-01-27T12:24:43.567 回答
0

来自@Octopus-Paul:

Country.all.map {|country| country.regions }.flatten
于 2015-01-27T12:01:59.647 回答
0

只需搜索与您的国家列表匹配的地区:

countries = Country.all
regions = Region.where(country: countries)
于 2019-07-16T02:32:18.357 回答