2011-06-12 61 views
0

假设我有两个Rails的ActiveRecord的车型CarType(使/型号的汽车)和汽车(一CarType的实例)。 汽车* belongs_to * CarType和CarType * has_many *汽车。铸造一个ActiveRecord的集合,从一种类型到另

我想要一个汽车列表,但只有独特的CarTypes(结果中没有重复的CarTypes)。

基本上,我想要的结果:

CarType.find(:all, :include => [:cars]) 

...但铸成汽车的集合对象,而不是。我怎样才能做到这一点?

编辑

我开始执行上述CarType.find声明解决这个,逆向工程Rails的生成的SQL代码(Rails的实际产生两个SQL语句),然后使用Car.find_by_sql,但我觉得解决方案变得非常笨重。

+0

所以你想每个CarType只检索一辆车? – bassneck 2011-06-12 21:20:55

+0

是的,正确的:每个车型只有一辆车。侧面问题:排序顺序会影响哪个Car(因为可能会有多个)会为每个CarType选择? – 2011-06-12 21:23:24

回答

1

我认为,Cars.group("cartype_id")是你在找什么。并回答你的问题,afaik排序适用于群组之后。

+0

差不多!这解决了它:'Car.find(:all,:include => [:car_type],:group =>:car_type_id)'。谢谢@bassneck! – 2011-06-13 18:22:32

+0

有趣......我在我的项目上检查了我的代码,它工作。但无论如何,很高兴你把它整理出来。干杯:) – bassneck 2011-06-13 19:39:10

相关问题