aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorCarlos Antonio da Silva <carlosantoniodasilva@gmail.com>2014-01-31 01:41:24 -0800
committerCarlos Antonio da Silva <carlosantoniodasilva@gmail.com>2014-01-31 01:41:24 -0800
commit5df52961f7dad10af5d4341df5f8a62c4634b699 (patch)
tree057dda816d6caad517ef58cdd8cb2c8ee0abf665 /activerecord/lib
parent530cab328ef3f2a29767911b3a17574198cd7510 (diff)
parent4506dd2f07be824fd7e0eb6165c29994aeb1bfcd (diff)
downloadrails-5df52961f7dad10af5d4341df5f8a62c4634b699.tar.gz
rails-5df52961f7dad10af5d4341df5f8a62c4634b699.tar.bz2
rails-5df52961f7dad10af5d4341df5f8a62c4634b699.zip
Merge pull request #13896 from laurocaetano/dangerous_association_names
Associations now raises `ArgumentError` on name conflicts. Closes #13217.
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/associations/builder/association.rb6
1 files changed, 6 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/associations/builder/association.rb b/activerecord/lib/active_record/associations/builder/association.rb
index 3911d1b520..f085fd1cfd 100644
--- a/activerecord/lib/active_record/associations/builder/association.rb
+++ b/activerecord/lib/active_record/associations/builder/association.rb
@@ -26,6 +26,12 @@ module ActiveRecord::Associations::Builder
attr_reader :name, :scope, :options
def self.build(model, name, scope, options, &block)
+ if model.dangerous_attribute_method?(name)
+ raise ArgumentError, "You tried to define an association named #{name} on the model #{model.name}, but " \
+ "this will conflict with a method #{name} already defined by Active Record. " \
+ "Please choose a different association name."
+ end
+
builder = create_builder model, name, scope, options, &block
reflection = builder.build(model)
define_accessors model, reflection