如何在Ruby on Rails4上订购has_many模型?

时间:2013-12-21 04:20:10

标签: ruby-on-rails ruby ruby-on-rails-4

class Section < ActiveRecord::Base
  has_many :items, -> {order "number DESC"}
end
class Item < ActiveRecord::Base
  belongs_to :section   
end


#controller
@sections = Section.order("number DESC")

每个型号都有数字栏。 我认为项目的默认顺序是“编号DESC”。 但我想重新订购或在物品上添加一些其他条件。 有人知道如何制作动态条件或订购吗?

2 个答案:

答案 0 :(得分:0)

您可能正在寻找文档中列出的范围:http://guides.rubyonrails.org/active_record_querying.html#scopes这是一种允许您创建不同排序并使其成为类方法的方法。

默认情况下,它会按ID asc排序(购买时你已经在你的定义中更改了它)

答案 1 :(得分:0)

您可以使用has_many本身的选项指定排序顺序:

class Section < ActiveRecord::Base
  has_many :items, :order => 'number DESC'
end
class Item < ActiveRecord::Base
  belongs_to :section   
end

#controller
@sections = Section.find(:id)
@items = @sections.items

或者您可以将ActiveRecord与订单一起使用:

@sections = Section.find(:id)
@items = @sections.items.find(:all, :order => 'number DESC')
#or
@items = @sections.items.all(:order => 'number DESC')