diff options
author | Carlos Antonio da Silva <carlosantoniodasilva@gmail.com> | 2014-01-31 01:41:24 -0800 |
---|---|---|
committer | Carlos Antonio da Silva <carlosantoniodasilva@gmail.com> | 2014-01-31 01:41:24 -0800 |
commit | 5df52961f7dad10af5d4341df5f8a62c4634b699 (patch) | |
tree | 057dda816d6caad517ef58cdd8cb2c8ee0abf665 /activerecord/lib | |
parent | 530cab328ef3f2a29767911b3a17574198cd7510 (diff) | |
parent | 4506dd2f07be824fd7e0eb6165c29994aeb1bfcd (diff) | |
download | rails-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.rb | 6 |
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 |