Rails如何使用where对多列进行排序?

时间:2011-10-14 00:37:39

标签: ruby-on-rails ruby ruby-on-rails-3

如何使用两列订购实例变量?

我想在reel_order和reel_online之后订购,它作为一个布尔值,应该是真的。

我试过这个:

<% @movies.find(:all, :order => "reel_order, where(reel_online) = 1").each do |movie| %>

使用MySQL作为数据库时,是否可以使用activerecord或如何订购。我也想知道如何使用postgreSQL数据库。

更新:

我在循环中使用它:

<% @movies.find(:all, :order => "reel_order, reel_online DESC").each do |movie| %>

enter image description here

结果是在reel_online之后没有订购@movie。当眼睛打开时,reel_online为真。我希望睁开的眼睛像预期的那样位于顶端。

3 个答案:

答案 0 :(得分:4)

我认为你混合了列的顺序。它应该是

<% @movies.find(:all, :order => "reel_online DESC, reel_order").each do |movie| %>

答案 1 :(得分:1)

应该这样做:

@movies.order("reel_order, reel_online DESC")

答案 2 :(得分:1)

Igor Kapkov和我有类似的态度,但我会更活跃的积极记录

@movies = Movies.find_all_by_reel_online(  1,
                                           :order => 'reel_order ASC, reel_online ASC'
                                           :conditions => ['reel_online = TRUE']
)

查找方法http://apidock.com/rails/ActiveRecord/Base/find/class

的文档

我的https://github.com/roolo/mwstt/blob/master/app/controllers/datetimes_controller.rb

数据库搜索次数很少

顺便说一句: <%引导我,您正在查看视图中的记录。你不应该把它放在这里