Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.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 我可以在Rails 4中构造一个双顺序SQL子句吗?范围,Arel表?_Ruby On Rails - Fatal编程技术网

Ruby on rails 我可以在Rails 4中构造一个双顺序SQL子句吗?范围,Arel表?

Ruby on rails 我可以在Rails 4中构造一个双顺序SQL子句吗?范围,Arel表?,ruby-on-rails,Ruby On Rails,我有一小行代码,我正试图在一个模型文件中从Rails 2升级到Rails 4 class Forum < ActiveRecord::Base belongs_to :project has_many :topics, :order => 'sticky desc, replied_at desc', :dependent => :destroy do def first @first_topic ||= find(:first) end end 从我

我有一小行代码,我正试图在一个模型文件中从Rails 2升级到Rails 4

class Forum < ActiveRecord::Base
belongs_to :project
has_many :topics, :order => 'sticky desc, replied_at desc', :dependent => :destroy do
   def first
     @first_topic ||= find(:first)
   end
 end
从我的《敏捷Web开发4》一书中,我引用

请注意,Rails不知道如何处理多个order或limit子句,因此请确保每个调用链只使用这些子句一次

下面是Rails 4指南中的示例范围

class Customer < ActiveRecord::Base
  has_many :orders, -> { order "date_confirmed DESC" }
end

这不是重构该语句的有效方法,还是我需要将该语句分成两个作用域并将它们链接起来?甚至可能是一张槟榔桌?有什么想法吗?

似乎可以创建一个双顺序SQL语句作为作用域

has_many :topics, -> {order "sticky DESC, replied_at DESC" }, { dependent: :destroy } do
  def first
    @first_topic ||= find(:first)
  end
end
此代码似乎工作正常

scope :sticky_and_replied_at_desc {order("sticky DESC, replied_at DESC")}
has_many :topics, -> {order "sticky DESC, replied_at DESC" }, { dependent: :destroy } do
  def first
    @first_topic ||= find(:first)
  end
end