Ruby on Rails 5.2 - ActiveModel::Name

वर्ग ActiveModel :: नाम




ruby

वर्ग ActiveModel :: नाम

जनक:
Object
शामिल मॉड्यूल:

गुण

कैश_की [आर]
संग्रह [R]
तत्व [R]
i18n_key [R]
नाम [R]
param_key [R]
बहुवचन [आर]
मार्ग_की [R]
एकवचन [आर]
एकवचन_रौटे_की [आर]

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

new (klass, namespace = nil, name = nil) स्रोत दिखाएँ
# File activemodel/lib/active_model/naming.rb, line 148
def initialize(klass, namespace = nil, name = nil)
  @name = name || klass.name

  raise ArgumentError, "Class name cannot be blank. You need to supply a name argument when anonymous class given" if @name.blank?

  @unnamespaced = @name.sub(/^#{namespace.name}::/, "") if namespace
  @klass        = klass
  @singular     = _singularize(@name)
  @plural       = ActiveSupport::Inflector.pluralize(@singular)
  @element      = ActiveSupport::Inflector.underscore(ActiveSupport::Inflector.demodulize(@name))
  @human        = ActiveSupport::Inflector.humanize(@element)
  @collection   = ActiveSupport::Inflector.tableize(@name)
  @param_key    = (namespace ? _singularize(@unnamespaced) : @singular)
  @i18n_key     = @name.underscore.to_sym

  @route_key          = (namespace ? ActiveSupport::Inflector.pluralize(@param_key) : @plural.dup)
  @singular_route_key = ActiveSupport::Inflector.singularize(@route_key)
  @route_key << "_index" if @plural == @singular
end

एक नया ActiveModel::Name उदाहरण देता है। डिफ़ॉल्ट रूप से, name namespace और name विकल्प क्रमशः दिए गए वर्ग के नाम स्थान और नाम को ले जाएगा।

module Foo
  class Bar
  end
end

ActiveModel::Name.new(Foo::Bar).to_s
# => "Foo::Bar"

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

# File activemodel/lib/active_model/naming.rb, line 97
    

String#!~ लिए बराबर String#!~ । दिए गए rexxp के खिलाफ वर्ग के नाम का मिलान करें। अगर कोई मैच नहीं तो true है, अन्यथा false

class BlogPost
  extend ActiveModel::Naming
end

BlogPost.model_name !~ /Post/ # => false
BlogPost.model_name !~ /\d/   # => true
# File activemodel/lib/active_model/naming.rb, line 64
    

String#<=> बराबर।

class BlogPost
  extend ActiveModel::Naming
end

BlogPost.model_name <=> 'BlogPost'  # => 0
BlogPost.model_name <=> 'Blog'      # => 1
BlogPost.model_name <=> 'BlogPosts' # => -1
# File activemodel/lib/active_model/naming.rb, line 33
    

String#== बराबर। यदि वर्ग का नाम और other समान हैं, तो यह true , अन्यथा false

class BlogPost
  extend ActiveModel::Naming
end

BlogPost.model_name == 'BlogPost'  # => true
BlogPost.model_name == 'Blog Post' # => false
# File activemodel/lib/active_model/naming.rb, line 48
    

#== बराबर।

class BlogPost
  extend ActiveModel::Naming
end

BlogPost.model_name === 'BlogPost'  # => true
BlogPost.model_name === 'Blog Post' # => false
# File activemodel/lib/active_model/naming.rb, line 81
    

String#=~ बराबर है। दिए गए rexxp के खिलाफ वर्ग के नाम का मिलान करें। मैच शुरू होने पर या मैच न होने पर nil लौटा देता है।

class BlogPost
  extend ActiveModel::Naming
end

BlogPost.model_name =~ /Post/ # => 4
BlogPost.model_name =~ /\d/   # => nil
# File activemodel/lib/active_model/naming.rb, line 113
    

String#eql? बराबर String#eql? । यदि वर्ग का नाम और other समान लंबाई और सामग्री है, अन्यथा false

class BlogPost
  extend ActiveModel::Naming
end

BlogPost.model_name.eql?('BlogPost')  # => true
BlogPost.model_name.eql?('Blog Post') # => false
मानव (विकल्प = {}) स्रोत दिखाएं
# File activemodel/lib/active_model/naming.rb, line 178
def human(options = {})
  return @human unless @klass.respond_to?(:lookup_ancestors) &&
                       @klass.respond_to?(:i18n_scope)

  defaults = @klass.lookup_ancestors.map do |klass|
    klass.model_name.i18n_key
  end

  defaults << options[:default] if options[:default]
  defaults << @human

  options = { scope: [@klass.i18n_scope, :models], count: 1, default: defaults }.merge!(options.except(:default))
  I18n.translate(defaults.shift, options)
end

I18n का उपयोग करके मॉडल नाम को और अधिक मानव प्रारूप में परिवर्तित करें। डिफ़ॉल्ट रूप से, यह तब अंडरस्कोर करेगा जो वर्ग के नाम का मानवीकरण करेगा।

class BlogPost
  extend ActiveModel::Naming
end

BlogPost.model_name.human # => "Blog post"

अतिरिक्त अनुवाद options साथ options निर्दिष्ट options

# File activemodel/lib/active_model/naming.rb, line 127
    

वर्ग का नाम लौटाता है।

class BlogPost
  extend ActiveModel::Naming
end

BlogPost.model_name.to_s # => "BlogPost"
# File activemodel/lib/active_model/naming.rb, line 134
delegate :==, :===, :<=>, :=~, :"!~", :eql?, :to_s,
         :to_str, :as_json, to: :name

To_s के बराबर।