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