aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/associations/builder/association.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/associations/builder/association.rb')
-rw-r--r--activerecord/lib/active_record/associations/builder/association.rb13
1 files changed, 9 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/associations/builder/association.rb b/activerecord/lib/active_record/associations/builder/association.rb
index 37ba1c73b1..f86d975592 100644
--- a/activerecord/lib/active_record/associations/builder/association.rb
+++ b/activerecord/lib/active_record/associations/builder/association.rb
@@ -1,3 +1,5 @@
+require 'active_support/core_ext/module/attribute_accessors'
+
# This is the parent Association class which defines the variables
# used by all associations.
#
@@ -16,7 +18,10 @@ module ActiveRecord::Associations::Builder
end
self.extensions = []
- VALID_OPTIONS = [:class_name, :class, :foreign_key, :validate]
+ # TODO: This class accessor is needed to make activerecord-deprecated_finders work.
+ # We can move it to a constant in 5.0.
+ cattr_accessor :valid_options, instance_accessor: false
+ self.valid_options = [:class_name, :class, :foreign_key, :validate]
def self.build(model, name, scope, options, &block)
extension = define_extensions model, name, &block
@@ -63,12 +68,12 @@ module ActiveRecord::Associations::Builder
raise NotImplementedError
end
- def self.valid_options(options)
- VALID_OPTIONS + Association.extensions.flat_map(&:valid_options)
+ def self.build_valid_options(options)
+ self.valid_options + Association.extensions.flat_map(&:valid_options)
end
def self.validate_options(options)
- options.assert_valid_keys(valid_options(options))
+ options.assert_valid_keys(build_valid_options(options))
end
def self.define_extensions(model, name)