module ProgneTapera::EnumConfig
Public Instance Methods
enum(name = nil, localized_name = name) { || ... }
click to toggle source
为枚举类型提供 .enum 方法。如: enum :gender # 或 enum :gender, :localized_gender 第一个参数是枚举类型在配置文件中存储的枚举项的 key 。 第二个参数是枚举类型在国际化配置文件中存储的枚举项文本的 key 。如果不提供第二个参数,则自动使用第一个参数进行查找。
# File lib/progne_tapera/enum_config.rb, line 24 def enum(name = nil, localized_name = name) if block_given? yield.each do |key, value| options = value.map { |k, v| [ k.to_sym, v ] }.to_h #options[:optional] = true if options[:optional].nil? code = options.delete :code safe_add_item ProgneTapera::EnumItem.new(code, key.to_s, options) end else name = enum_name(name).to_s enumerations = Rails.configuration.enum[name] raise ArgumentError.new("The enum.#{name} was not configured in the config/enum.yml file.") if enumerations.blank? enumerations.each do |key, value| options = value.map { |k, v| [ k.to_sym, v ] }.to_h #options[:optional] = false code = options.delete :code options[:localized_name] = I18n.t "enum.#{localized_name||name}.#{key}" item = ProgneTapera::EnumItem.new code, key, options safe_add_item item end end
overload_enum_i18n(localized_name = nil)
click to toggle source
为枚举类型提供 .overload_enum_i18n 方法。如: overload_enum_i18n
:your_gender_i18n_key
# File lib/progne_tapera/enum_config.rb, line 58 def overload_enum_i18n(localized_name = nil) each do |enum_item| enum_item.options[:localized_name] = I18n.t "enum.#{localized_name}.#{enum_item.name}" end end