2012-07-24 78 views
0

我正在使用Ruby on Rails 3.2.2,並且我想要訂購只有一個元素出現在Array中,此元素是由執行ActiveRecord::Relation產生的。也就是說,我有一個ActiveRecord::Relation返回以下Array如何訂購陣列中只有一個元素?

[ 
    #<Article id: 1, title: "Sample title 1", content: "Sample content 1">, 
    #<Article id: 2, title: "Sample title 2", content: "Sample content 2">, 
    #<Article id: 3, title: "Sample title 3", content: "Sample content 3">, 
    #<Article id: 4, title: "Sample title 4", content: "Sample content 4">, 
    #<Article id: 5, title: "Sample title 5", content: "Sample content 5">, 
    ... 
] 

我想「放」 /「命令」的Article對象與id 4和title「樣題4」到第一位置Array中,以便可以輸出相關對象數據作爲我的視圖文件中的第一個元素。

如何做到這一點?

+0

您可以分配權重的文章,並進行排序,最後,當檢索。所以,在你的情況下,ID = 4將是「最重」的,並且會首先出現。 – 2012-07-24 11:23:06

+0

@Sergio Tulentsev - 你可以更明確(可能有一個例子)?您可以使用例如 – Backo 2012-07-24 11:24:20

+0

acts_as_list-gem(https://github.com/swanandp/acts_as_list)來幫助你衡量你的文章。 – 2012-07-24 12:18:31

回答

1

只需使用order到這一點,就會生成訂單,計算結果爲真或FALS條件SQL,這首先使您所需的元素:

Article.order('id = 4, title = "Sample title 4"') 

相當硬編碼的,但它的作品。

+1

*順便說一句:我也可以使用'order(:id => 4)'。 – Backo 2012-07-24 11:43:53

+0

這是MySQL特有的嗎? – 2012-07-24 13:27:50

0

我想這應該是

Article.order("id = 4 DESC") 
+0

究竟是什麼讓你的代碼?也就是說,它只用'id = 4'命令文章記錄(將該記錄放在第一位置),或者對訂購其他記錄也有一些影響? – Backo 2012-07-24 21:07:32