我有一个Category
模型,其中包含父类别和子类别(acts_as_nested_set
)。每个类别都有balance
,我想按照“家庭平衡”的总和来订购父类别。
通过“家庭平衡”我的意思是:
def children_categories(c)
current_user.categories.where(parent_id: c.id)
end
def family_balance(c)
c.balance + children_categories(c).sum(:balance)
end
我在帮助器中使用这些方法在视图中显示它,但我不知道如何在控制器中的family_balance
方法中使用order
。
事实上我需要这样的东西才能起作用:
@parent_categories = current_user.categories.where(parent_id: nil).order(family_balance: :asc)
谢谢!
答案 0 :(得分:0)
方法order
向SQL请求添加ORDER BY
指令。您无法使用它,因为family_balance
不是表的列。而是将sort_by
用于关系返回的集合:
current_user.categories.where(parent_id: nil).sort_by(&:family_balance)