Ruby on Rails 5.2 - ActiveModel::Naming

मॉड्यूल ActiveModel :: नामकरण




ruby

मॉड्यूल ActiveModel :: नामकरण

सक्रिय मॉडल नामकरण

अपने ऑब्जेक्ट पर एक model_name विधि बनाता है।

लागू करने के लिए, केवल ActiveModel::Naming विस्तार करें ActiveModel::Naming अपनी वस्तु में ActiveModel::Naming :

class BookCover
  extend ActiveModel::Naming
end

BookCover.model_name.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"

ActiveModel::Naming आपकी ऑब्जेक्ट में प्रदान करने वाली कार्यक्षमता प्रदान करना सक्रिय मॉडल लिंट परीक्षण को पास करने के लिए आवश्यक है। तो या तो नीचे दी गई विधि का विस्तार करें, या अपना स्वयं का रोल करना आवश्यक है।

पब्लिक क्लास के तरीके

param_key (record_or_class) स्रोत दिखाएँ
# File activemodel/lib/active_model/naming.rb, line 305
def self.param_key(record_or_class)
  model_name_from_record_or_class(record_or_class).param_key
end

पैराम नाम के लिए उपयोग करने के लिए स्ट्रिंग लौटाता है यह नामांकित मॉडल के लिए अलग है कि क्या यह पृथक इंजन के अंदर है।

# For isolated engine:
ActiveModel::Naming.param_key(Blog::Post) # => "post"

# For shared engine:
ActiveModel::Naming.param_key(Blog::Post) # => "blog_post"
बहुवचन (record_or_class) स्रोत दिखाएँ
# File activemodel/lib/active_model/naming.rb, line 250
def self.plural(record_or_class)
  model_name_from_record_or_class(record_or_class).plural
end

एक रिकॉर्ड या वर्ग के बहुवचन वर्ग का नाम देता है।

ActiveModel::Naming.plural(post)             # => "posts"
ActiveModel::Naming.plural(Highrise::Person) # => "highrise_people"
मार्ग_की (record_or_class) स्रोत दिखाएं
# File activemodel/lib/active_model/naming.rb, line 293
def self.route_key(record_or_class)
  model_name_from_record_or_class(record_or_class).route_key
end

रूट नाम बनाते समय उपयोग करने के लिए स्ट्रिंग लौटाता है। यह नामांकित मॉडल के लिए अलग है कि क्या यह पृथक इंजन के अंदर है।

# For isolated engine:
ActiveModel::Naming.route_key(Blog::Post) # => "posts"

# For shared engine:
ActiveModel::Naming.route_key(Blog::Post) # => "blog_posts"

मार्ग कुंजी यह भी मानती है कि क्या संज्ञा बेशुमार है और ऐसे मामलों में, स्वचालित रूप से _index को जोड़ देता है।

विलक्षण (record_or_class) स्रोत दिखाएँ
# File activemodel/lib/active_model/naming.rb, line 258
def self.singular(record_or_class)
  model_name_from_record_or_class(record_or_class).singular
end

एक रिकॉर्ड या वर्ग के एकवचन वर्ग का नाम देता है।

ActiveModel::Naming.singular(post)             # => "post"
ActiveModel::Naming.singular(Highrise::Person) # => "highrise_person"
singular_route_key (record_or_class) स्रोत दिखाएँ
# File activemodel/lib/active_model/naming.rb, line 278
def self.singular_route_key(record_or_class)
  model_name_from_record_or_class(record_or_class).singular_route_key
end

रूट नाम बनाते समय उपयोग करने के लिए स्ट्रिंग लौटाता है। यह नामांकित मॉडल के लिए अलग है कि क्या यह पृथक इंजन के अंदर है।

# For isolated engine:
ActiveModel::Naming.singular_route_key(Blog::Post) # => "post"

# For shared engine:
ActiveModel::Naming.singular_route_key(Blog::Post) # => "blog_post"
अगणनीय? (record_or_class) स्रोत दिखाएं
# File activemodel/lib/active_model/naming.rb, line 266
def self.uncountable?(record_or_class)
  plural(record_or_class) == singular(record_or_class)
end

यह पहचानता है कि रिकॉर्ड या वर्ग का वर्ग नाम बेशुमार है या नहीं।

ActiveModel::Naming.uncountable?(Sheep) # => true
ActiveModel::Naming.uncountable?(Post)  # => false

सार्वजनिक प्रवृत्ति के तरीके

# File activemodel/lib/active_model/naming.rb, line 237
def model_name
  @_model_name ||= begin
    namespace = parents.detect do |n|
      n.respond_to?(:use_relative_model_naming?) && n.use_relative_model_naming?
    end
    ActiveModel::Name.new(self, namespace)
  end
end

कोई ActiveModel::Name मॉड्यूल के लिए ActiveModel::Name ऑब्जेक्ट देता है। इसका उपयोग सभी प्रकार के नामकरण से संबंधित जानकारी प्राप्त करने के लिए किया जा सकता है (अधिक जानकारी के लिए ActiveModel::Name देखें)।

class Person
  extend ActiveModel::Naming
end

Person.model_name.name     # => "Person"
Person.model_name.class    # => ActiveModel::Name
Person.model_name.singular # => "person"
Person.model_name.plural   # => "people"