2012-09-11 33 views
0

我只是想知道是否有可能加入一个表,然后按列上的列进行排序。Rails activerecord按两个表排序

举例来说,如果我有两个表,一个叫棒棒糖和其他featured_lollipops:

棒棒糖可以belong_to featured_lollipops

两个表都有一个名为“甜头”

列,因此它可能使查询,如:

Lollipop.joins(:featured_lollipops).order("sweetness ASC") 

如果返回的结果是通过排序的所有棒棒糖的ActiveRecord的哈希即使甜蜜来自联合餐桌,甜蜜也是如此?

在此先感谢。

编辑:

我需要能够通过甜头结合,而不是在每列甜度进行排序。

回答

0

order方法中,您可以使用lollipops.sweetnessfeatured_lollipops.sweetness来区分这两个表。
下面是一个例子:

.order("lollipops.sweetness ASC, featured_lollipops.sweetness DESC") 
+0

我试过这样做,但似乎优先考虑棒棒糖表。 即它看起来就像这样: 棒棒糖 - 甜蜜1 棒棒堂 - 甜蜜2 棒棒糖 - 甜蜜1(精选) – jwhiting

+0

好了,这仅仅是如何排序的方法使用表名的例子。您必须根据您的分类需求进行调整。 – MurifoX

+0

为什么会是ASC和其他DESC? – jwhiting

0

将这项工作?

a = Lollipop.joins(:featured_lollipop) + FeaturedLollipop.all 
a.sort_by {|f| f.sweetness} 
+0

我只想拉回属于棒棒堂记录的FeaturedLollipop记录。即通过featured_lollipop_id列关联的记录。 – jwhiting

+0

修订。原始帖子是否正确?棒棒糖是不是属于特色_棒棒糖?或者相反呢? – veritas1

0

是的,我相信你可以做到这一点。

Lollipop.joins(:featured_lollipop). 
    select(
    "(lollipop.sweetness + featured_lollipop.sweetness) AS sorting_sweetness, lollipop.*" 
).order("sorting_sweetness DESC")