Module: Traits::Model::Naming

Included in:
Traits::Model
Defined in:
lib/traits/concerns/model/naming.rb

Instance Method Summary collapse

Instance Method Details

#class_nameObject

class User

class_name => User

class Assets::Photo

class_name => Assets::Photo


56
57
58
# File 'lib/traits/concerns/model/naming.rb', line 56

def class_name
  @class_name ||= model_class.name
end

#lookup_name(namecase = :class) ⇒ Object

class User

lookup_name => User
lookup_name(:underscore) => user

class Assets::Photo

lookup_name => AssetsPhoto
lookup_name(:underscore) => assets_photo


68
69
70
# File 'lib/traits/concerns/model/naming.rb', line 68

def lookup_name(namecase = :class)
  namecase == :underscore ? name.gsub('/', '_') : class_name.gsub('::', '')
end

#nameObject

class User

name => user

class Assets::Photo

name => assets/photo


10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/traits/concerns/model/naming.rb', line 10

def name
  # Rails 4.1 doesn't support nested acronyms
  #
  # Rails 4.1 behaviour:
  # 'Helpers::ViewHelper'.underscore  => 'helpers/view_helper'  - good
  # 'CIHelper'.underscore             => 'ci_helper'            - good
  # 'Helpers::CIHelper'               => 'helpers/ci_helper'    - good
  #
  # 'Helpers::ViewHelper'             => 'helpers/view_helper'  - good
  # 'CIHelper'                        => 'cihelper'             - good
  # 'Helpers::CIHelper'               => 'helpers/ci_helper'    - bad!
  #
  # Newer Rails behaviour:
  # 'Helpers::ViewHelper'             => 'helpers/view_helper'  - good
  # 'CIHelper'                        => 'cihelper'             - good
  # 'Helpers::CIHelper'               => 'helpers/cihelper'     - good
  #
  @name ||= model_class.name.split('::').map(&:underscore).join('/')
end

#plural_nameObject

class User

plural_name => users

class Assets::Photo

plural_name => assets/photos


36
37
38
# File 'lib/traits/concerns/model/naming.rb', line 36

def plural_name
  @plural_name ||= name.pluralize
end

#resource_nameObject

class User

resource_name => users

class Assets::Photo

resource_name => assets/photos


46
47
48
# File 'lib/traits/concerns/model/naming.rb', line 46

def resource_name
  @resource_name ||= plural_name
end

#to_hashObject



72
73
74
75
76
77
78
79
80
# File 'lib/traits/concerns/model/naming.rb', line 72

def to_hash
  super.merge!(
    name:          name,
    plural_name:   plural_name,
    class_name:    class_name,
    lookup_name:   lookup_name,
    resource_name: resource_name
  )
end