获取许多 objects 个关联的数组
Get an array of many objects associations
我不知道如何找到一个可以理解的标题,所以我会尽力解释我的问题。
我有两个型号:
- 国家翻译与全球化,有一个名字和许多地区
- 地区 belongs_to 国家
我想做的是将所有地区的数组形成一个国家数组。
例如
Country.all.regions
Country.with_translations(I18n.locale).order("country_translations.name asc").regions
有一个简单的方法来获取这个数组?
来自@Octopus-Paul:
Country.all.map {|country| country.regions }.flatten
@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
只需搜索与您的国家/地区列表匹配的地区:
countries = Country.all
regions = Region.where(country: countries)
我不知道如何找到一个可以理解的标题,所以我会尽力解释我的问题。
我有两个型号: - 国家翻译与全球化,有一个名字和许多地区 - 地区 belongs_to 国家
我想做的是将所有地区的数组形成一个国家数组。
例如
Country.all.regions
Country.with_translations(I18n.locale).order("country_translations.name asc").regions
有一个简单的方法来获取这个数组?
来自@Octopus-Paul:
Country.all.map {|country| country.regions }.flatten
@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
只需搜索与您的国家/地区列表匹配的地区:
countries = Country.all
regions = Region.where(country: countries)