class ActiveRecord::Associations::Builder::Association - activerecord-deprecated_finders-1.0.4 Documentation

# class ActiveRecord::Associations::Builder::Association

### Constants

DEPRECATED_OPTIONS

### Public Instance Methods

initialize_with_deprecated_options(model, name, scope, options) click to toggle source

    # File lib/active_record/deprecated_finders/association_builder.rb, line 40
    def initialize_with_deprecated_options(model, name, scope, options)
      options            = scope if scope.is_a?(Hash)
      deprecated_options = options.slice(*DEPRECATED_OPTIONS)

      if scope.respond_to?(:call) && !deprecated_options.empty?
        raise ArgumentError,
          "Invalid mix of scope block and deprecated finder options on "            "ActiveRecord association: #{model.name}.#{macro} :#{name}"
      end

      if scope.is_a?(Hash)
        if deprecated_options.empty?
          scope = nil
        else
          ActiveSupport::Deprecation.warn(
            "The following options in your #{model.name}.#{macro} :#{name} declaration are deprecated: "              "#{deprecated_options.keys.map(&:inspect).join(',')}. Please use a scope block instead. "              "For example, the following:\n"              "\n"              "    has_many :spam_comments, conditions: { spam: true }, class_name: 'Comment'\n"              "\n"              "should be rewritten as the following:\n"              "\n"              "    has_many :spam_comments, -> { where spam: true }, class_name: 'Comment'\n"
          )
          scope   = DeprecatedOptionsProc.new(deprecated_options)
          options = options.except(*DEPRECATED_OPTIONS)
        end
      end

      initialize_without_deprecated_options(model, name, scope, options)
    end