2012-07-24 38 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