0

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

#xx_controller.rb

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

但我更愿意在控制器中做这样的事情......

@cities = City.all

在我看来,类似于查询的内容,而不是预先打包的实例变量-

@cities.where....

有什么想法吗?

4

2 回答 2

1

如果您不介意一次从数据库中加载所有内容,您可以执行以下操作:

@cities = City.all.group_by(&:population)

它返回一个散列,其键是population属性的可能值。然后,在您看来,您可以通过执行访问每个“组”中的城市@cities['small']@cities['medium']依此类推。

于 2012-10-04T00:48:26.927 回答
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' }
于 2012-10-04T00:45:41.937 回答