Module: ActiveModel::Naming
- Defined in:
- activemodel/lib/active_model/naming.rb
Overview
Active Model Naming
Creates a model_name method on your object.
To implement, just extend ActiveModel::Naming in your object:
class BookCover
extend ActiveModel::Naming
end
BookCover.model_name # => "BookCover"
BookCover.model_name.human # => "Book cover"
BookCover.model_name.i18n_key # => "book_cover"
BookModule::BookCover.model_name.i18n_key # => "book_module.book_cover"
Providing the functionality that ActiveModel::Naming provides in your object is required to pass the Active Model Lint test. So either extending the provided method below, or rolling your own is required..
Class Method Summary (collapse)
-
+ (Object) param_key(record_or_class)
Returns string to use for params names.
-
+ (Object) plural(record_or_class)
Returns the plural class name of a record or class.
-
+ (Object) route_key(record_or_class)
Returns string to use while generating route names.
-
+ (Object) singular(record_or_class)
Returns the singular class name of a record or class.
-
+ (Boolean) uncountable?(record_or_class)
Identifies whether the class name of a record or class is uncountable.
Instance Method Summary (collapse)
-
- (Object) model_name
Returns an ActiveModel::Name object for module.
Class Method Details
+ (Object) param_key(record_or_class)
Returns string to use for params names. It differs for namespaced models regarding whether it's inside isolated engine.
For isolated engine: ActiveModel::Naming.param_key(Blog::Post) #=> post
For shared engine: ActiveModel::Naming.param_key(Blog::Post) #=> blog_post
127 128 129 |
# File 'activemodel/lib/active_model/naming.rb', line 127 def self.param_key(record_or_class) model_name_from_record_or_class(record_or_class).param_key end |
+ (Object) plural(record_or_class)
Returns the plural class name of a record or class. Examples:
ActiveModel::Naming.plural(post) # => "posts"
ActiveModel::Naming.plural(Highrise::Person) # => "highrise_people"
87 88 89 |
# File 'activemodel/lib/active_model/naming.rb', line 87 def self.plural(record_or_class) model_name_from_record_or_class(record_or_class).plural end |
+ (Object) route_key(record_or_class)
Returns string to use while generating route names. It differs for namespaced models regarding whether it's inside isolated engine.
For isolated engine: ActiveModel::Naming.route_key(Blog::Post) #=> posts
For shared engine: ActiveModel::Naming.route_key(Blog::Post) #=> blog_posts
115 116 117 |
# File 'activemodel/lib/active_model/naming.rb', line 115 def self.route_key(record_or_class) model_name_from_record_or_class(record_or_class).route_key end |
+ (Object) singular(record_or_class)
Returns the singular class name of a record or class. Examples:
ActiveModel::Naming.singular(post) # => "post"
ActiveModel::Naming.singular(Highrise::Person) # => "highrise_person"
95 96 97 |
# File 'activemodel/lib/active_model/naming.rb', line 95 def self.singular(record_or_class) model_name_from_record_or_class(record_or_class).singular end |
+ (Boolean) uncountable?(record_or_class)
Identifies whether the class name of a record or class is uncountable. Examples:
ActiveModel::Naming.uncountable?(Sheep) # => true
ActiveModel::Naming.uncountable?(Post) => false
103 104 105 |
# File 'activemodel/lib/active_model/naming.rb', line 103 def self.uncountable?(record_or_class) plural(record_or_class) == singular(record_or_class) end |
Instance Method Details
- (Object) model_name
Returns an ActiveModel::Name object for module. It can be used to retrieve all kinds of naming-related information.
76 77 78 79 80 81 |
# File 'activemodel/lib/active_model/naming.rb', line 76 def model_name @_model_name ||= begin namespace = self.parents.detect { |n| n.respond_to?(:_railtie) } ActiveModel::Name.new(self, namespace) end end |