instance method new

Ruby on Rails 7.2.3

Since v4.0.13

Available in: v4.0.13 v4.1.16 v4.2.9 v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

new(attributes = nil, &block)

Determines if one of the attributes passed in is the inheritance column, and if the inheritance column is attr accessible, it initializes an instance of the given subclass instead of the base class.

Parameters

attributes opt = nil
block block
Source
# File activerecord/lib/active_record/inheritance.rb, line 56
      def new(attributes = nil, &block)
        if abstract_class? || self == Base
          raise NotImplementedError, "#{self} is an abstract class and cannot be instantiated."
        end

        if _has_attribute?(inheritance_column)
          subclass = subclass_from_attributes(attributes)

          if subclass.nil? && scope_attributes = current_scope&.scope_for_create
            subclass = subclass_from_attributes(scope_attributes)
          end

          if subclass.nil? && base_class?
            subclass = subclass_from_attributes(column_defaults)
          end
        end

        if subclass && subclass != self
          subclass.new(attributes, &block)
        else
          super
        end
      end

Defined in activerecord/lib/active_record/inheritance.rb line 56 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveRecord::Inheritance::ClassMethods

Type at least 2 characters to search.

↑↓ navigate · open · esc close