2012-09-11 36 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")