translate_enum
translate_enum copied to clipboard
[Feature Request] Sorting by translated key
Hi,
When building forms, doing this
= f.input :role, collection: MyModel.translated_roles
Method MyModel.translated_roles will return something like
[["Administrateur", "admin", "admin"], ["Utilisateur", "user", "user"], ["Master", "master", "master"]]
It would be great to have something like
MyModel.translated_roles_sorted
=>
[["Administrateur", "admin", "admin"], ["Master", "master", "master"], ["Utilisateur", "user", "user"]]
In the mean time, we built an initializer
require "translate_enum"
module TranslateEnumSortable
extend ActiveSupport::Concern
included do
def self.translate_enum(attribute, &block)
super
builder = TranslateEnum::Builder.new(self, attribute, &block)
# @return [Array]
# @example
# f.select_field :gender, f.object.class.translated_genders_sorted
define_singleton_method("#{builder.method_name_plural}_sorted") do
public_send(builder.method_name_plural).sort_by { |(translated, _)| translated }
end
end
end
end
TranslateEnum.include TranslateEnumSortable