我有一个固定深度的树状关系模型,每一层都有一个代码属性——类似这样;
class Category < ActiveRecord::Base
has_many :sub_categories
default_scope order(:code)
end
class SubCategory < ActiveRecord::Base
belongs_to :category
has_many :items
def self.sorted
self.joins(:category).order('"categories".code ASC, "sub_categories".code')
end
end
class Item < ActiveRecord::Base
belongs_to :sub_category
def self.sorted
# what goes here?
end
end
Category.all
获取由 排序的所有类别categories.code
。
SubCategory.sorted
获取按 . 排序的所有子类别categories.code, sub_categories.code
。我使用这种方法是因为default_scope : joins(:categories).order('categories.code, sub_categories.code')
返回.find
只读记录。
我想打电话Items.sorted
并获得订购的所有物品,categories.code, sub_categories.code, items.code
但我不知道如何。我想我需要第二个 .joins,但我没有要提供的关系名称。