new(name, scope, options, active_record)
public

No documentation available.

# File activerecord/lib/active_record/reflection.rb, line 517
      def initialize(name, scope, options, active_record)
        super

        @validated = false
        @type = -(options[:foreign_type]&.to_s || "#{options[:as]}_type") if options[:as]
        @foreign_type = -(options[:foreign_type]&.to_s || "#{name}_type") if options[:polymorphic]
        @join_table = nil
        @foreign_key = nil
        @association_foreign_key = nil
        @association_primary_key = nil
        if options[:query_constraints]
          raise ConfigurationError, <<~MSG.squish
            Setting `query_constraints:` option on `#{active_record}.#{macro} :#{name}` is not allowed.
            To get the same behavior, use the `foreign_key` option instead.
          MSG
        end

        # If the foreign key is an array, set query constraints options and don't use the foreign key
        if options[:foreign_key].is_a?(Array)
          options[:query_constraints] = options.delete(:foreign_key)
        end

        @deprecated = !!options[:deprecated]

        ensure_option_not_given_as_class!(:class_name)
      end