Module: Traits::Model::Naming

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

Instance Method Summary collapse

Instance Method Details

#class_nameObject

class User

class_name => User

class Assets::Photo

class_name => Assets::Photo


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

def class_name
  @class_name ||= active_record.name
end

#lookup_name(namecase = nil) ⇒ Object

class User

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

class Assets::Photo

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


80
81
82
83
84
85
86
# File 'lib/traits/model/naming.rb', line 80

def lookup_name(namecase = nil)
  if namecase == :underscore
    name(namecase)
  else
    @lookup_name ||= class_name.tr('::', '')
  end
end

#name(namecase = nil) ⇒ Object

class User

name              => user
name(:underscore) => user

class Assets::Photo

name              => assets/photo
name(:underscore) => assets_photo


15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/traits/model/naming.rb', line 15

def name(namecase = nil)
  # Rails 4.1 doesn't support nested acronyms.
  #
  # Suppose you have:
  #   ActiveSupport::Inflector.inflections(:en) do |inflect|
  #     inflect.acronym 'CI'
  #   end
  #
  # Rails 4.1 underscore behaviour:
  #  'Helpers::ViewHelper'             => 'helpers/view_helper'  - good
  #  'CIHelper'                        => '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 underscore behaviour:
  #  'Helpers::ViewHelper'             => 'helpers/view_helper'  - good
  #  'CIHelper'                        => 'cihelper'             - good
  #  'Helpers::CIHelper'               => 'helpers/cihelper'     - good
  #
  @name ||= active_record.name.split('::').map(&:underscore).join('/')
  if namecase == :underscore
    @underscore_name ||= @name.tr('/', '_')
  else
    @name
  end
end

#plural_name(namecase = nil) ⇒ Object

class User

plural_name              => users
plural_name(:underscore) => users

class Assets::Photo

plural_name              => assets/photos
plural_name(:underscore) => assets_photos


53
54
55
56
57
58
59
60
# File 'lib/traits/model/naming.rb', line 53

def plural_name(namecase = nil)
  @plural_name ||= name.pluralize
  if namecase == :underscore
    @plural_underscore_name ||= @plural_name.tr('/', '_')
  else
    @plural_name
  end
end

#resource_nameObject

TODO Deprecate? class User

resource_name => users

class Assets::Photo

resource_name => assets/photos


95
96
97
# File 'lib/traits/model/naming.rb', line 95

def resource_name
  @resource_name ||= plural_name
end

#to_hashObject



99
100
101
102
103
104
105
106
107
# File 'lib/traits/model/naming.rb', line 99

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