2
我有一个表users
设置这样的枚举角色:如何使用Ransack对枚举进行排序?
enum role: {
superadmin: 0,
admin: 1,
user: 2
}
而且我想它洗劫像其余属性进行排序。我怎样才能做到这一点?
当然,我可以按字母顺序对它们进行排序,但如果我想在未来添加另一个角色怎么办?
我有一个表users
设置这样的枚举角色:如何使用Ransack对枚举进行排序?
enum role: {
superadmin: 0,
admin: 1,
user: 2
}
而且我想它洗劫像其余属性进行排序。我怎样才能做到这一点?
当然,我可以按字母顺序对它们进行排序,但如果我想在未来添加另一个角色怎么办?
我做了基于断接听功能https://stackoverflow.com/a/37599787/2055858
def alphabetical_enum_sql(enum, field_name)
ordered_enum = enum.keys.sort
order_by = ["case"]
ordered_enum.each_with_index do |key, idx|
order_by << "WHEN #{field_name}=#{enum[key]} THEN #{idx}"
end
order_by << "end"
order_by.join(" ")
end
,然后用它像
scope :order_by_role, -> {
order(alphabetical_enum_sql(YourModel.roles, "role"))
}
这是一个很好的解决方案,但它不会与搜查工作。 – Brateq