是否可以解析一个对象数组以按属性选择它们?我有一种情况,我需要在索引页面上显示按属性分组的模型的所有对象。我在控制器中一直在做的是......
#xx_controller.rb
@group1 = City.where(:population => 'big')
@group2 = City.where(:population => 'medium')
@group3 = City.where(:population => 'small')
但我更喜欢在控制器中做这样的事情......
@cities = City.all
在我看来,查询的内容与预先打包的实例变量不同 -
@cities.where....
有什么想法吗?
答案 0 :(得分:1)
如果您不介意从数据库中一次性加载所有内容,可以执行以下操作:
@cities = City.all.group_by(&:population)
返回一个哈希,其键是population
属性的可能值。
然后,在您的视图中,您可以通过@cities['small']
,@cities['medium']
等访问每个“群组”上的城市。
答案 1 :(得分:0)
你的意思是这样吗?
@cities = City.all
small_cities = @cities.select { |city| city.population == 'small' }
medium_cities = @cities.select { |city| city.population == 'medium' }
big_cities = @cities.select { | city| city.population == 'big' }