Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何按几列进行排序?_Ruby On Rails_Ruby On Rails 3_Activerecord_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 如何按几列进行排序?

Ruby on rails 如何按几列进行排序?,ruby-on-rails,ruby-on-rails-3,activerecord,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Activerecord,Ruby On Rails 3.2,我是这样写的 /models/code.rb scope :recent, lambda { |n = 10| includes(:user).where('users.deleted_at' => nil).order("users.last_active_at DESC").limit(n) } 但是,有些记录有相同的用户。最后一个活动时间有时为 所以我试着在DESC中添加created_,如下所示 scope :recent, lambda { |n = 10| includes(

我是这样写的

/models/code.rb

scope :recent, lambda { |n = 10| includes(:user).where('users.deleted_at' => nil).order("users.last_active_at DESC").limit(n) }
但是,有些记录有相同的用户。最后一个活动时间有时为

所以我试着在DESC中添加created_,如下所示

scope :recent, lambda { |n = 10| includes(:user).where('users.deleted_at' => nil).order("users.last_active_at DESC, created_at DESC").limit(n) }
但我得到了这个错误。我的代码怎么了?实际上,在代码表中的
处创建了一个名为
的列

Error (Mysql2::Error: Unknown column 'created_at' in 'order clause'

由于includes决定用户是在一个SQL查询中加入codes表,还是生成两个单独的查询(出于性能原因),因此您应确保引用的是users表及其在列中创建的_:

    scope :recent, lambda { |n = 10| includes(:user).
      where('users.deleted_at' => nil).
      order("users.last_active_at DESC, users.created_at DESC").
      limit(n) }
还可以考虑出于责任原因合并作用域,如下所示:

如果您希望在创建的是
用户
,则使用
users.created_at DESC
而不是
created_at DESC
。如果是
codes
,则使用DESC处创建的
codes.created\u。