我正在使用Rails Ancestry gem,我已经用它来按Ancestry排序了:
Item.sort_by_ancestry(item.subtree)
但我还需要按每个项目的名称排序,这是多态关联的自定义属性。所以我在模型上这样做:
Class Item < ApplicationRecord
belongs_to :itemable, :polymorphic => true, dependent: :destroy
accepts_nested_attributes_for :itemable
attr_accessor :key
def key
self.itemable.key
end
end
但是,Ancestry附带的.arrange方法似乎只是将符号作为一个参数。例如:
Item.sort_by_ancestry(item.subtree.arrange(order: :id))
除此之外,我需要这样的事情:
Item.sort_by_ancestry(item.subtree.arrange(order :: key))
但是这不起作用,因为它不是数据库中的属性,它是模型类的属性。按ID排序工作正常我猜...至少它将按照用户创建项目的顺序,但我真的希望能够按字母顺序按键排序。
那么我如何通过键来命令它,这是在模型类上使用attr_accessor定义的自定义属性?