通过rails 3.2中的属性解析对象数组

时间:2012-10-04 00:35:19

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

是否可以解析一个对象数组以按属性选择它们?我有一种情况,我需要在索引页面上显示按属性分组的模型的所有对象。我在控制器中一直在做的是......

#xx_controller.rb

@group1 = City.where(:population => 'big')
@group2 = City.where(:population => 'medium')
@group3 = City.where(:population => 'small')

但我更喜欢在控制器中做这样的事情......

@cities = City.all

在我看来,查询的内容与预先打包的实例变量不同 -

@cities.where....

有什么想法吗?

2 个答案:

答案 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' }