Module: WellFormed::Translations::ClassMethods

Defined in:
lib/well_formed/translations.rb

Instance Method Summary collapse

Instance Method Details

#resource_alias(resource) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/well_formed/translations.rb', line 10

def resource_alias(resource)
  resolved = case resource
  when Class
    raise ArgumentError, "#{resource} does not respond to model_name" unless resource.respond_to?(:model_name)

    resource.model_name
  when Symbol, String
    name_str = ActiveSupport::Inflector.camelize(resource.to_s)
    ActiveModel::Name.new(Class.new, nil, name_str)
  else
    raise ArgumentError, "resource_alias expects a Class, Symbol, or String, got #{resource.class}"
  end

  define_singleton_method(:model_name) { resolved }

  alias_name = resolved.element.to_sym
  alias_method alias_name, :resource
end