Ruby on rails 我可以在Rails 4中构造一个双顺序SQL子句吗?范围,Arel表?
我有一小行代码,我正试图在一个模型文件中从Rails 2升级到Rails 4Ruby 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 从我
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