diff options
author | Jon Leighton <j@jonathanleighton.com> | 2010-10-15 17:46:09 +0100 |
---|---|---|
committer | Jon Leighton <j@jonathanleighton.com> | 2010-10-15 17:46:09 +0100 |
commit | edc176d33be9499f4c096779c5b4711b5daf0c06 (patch) | |
tree | c775c7643fca33a3ff18aaa724064e2a167c8616 /activerecord/lib/active_record/associations/has_many_through_association.rb | |
parent | d619e399380cd840f9f5ec88bb3d823fbb1f4d08 (diff) | |
download | rails-edc176d33be9499f4c096779c5b4711b5daf0c06.tar.gz rails-edc176d33be9499f4c096779c5b4711b5daf0c06.tar.bz2 rails-edc176d33be9499f4c096779c5b4711b5daf0c06.zip |
Make sure nested through associations are read only
Diffstat (limited to 'activerecord/lib/active_record/associations/has_many_through_association.rb')
-rw-r--r-- | activerecord/lib/active_record/associations/has_many_through_association.rb | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/associations/has_many_through_association.rb b/activerecord/lib/active_record/associations/has_many_through_association.rb index 313d9da621..f0ad166802 100644 --- a/activerecord/lib/active_record/associations/has_many_through_association.rb +++ b/activerecord/lib/active_record/associations/has_many_through_association.rb @@ -8,6 +8,11 @@ module ActiveRecord class HasManyThroughAssociation < HasManyAssociation #:nodoc: include ThroughAssociationScope + def build(attributes = {}, &block) + ensure_not_nested + super + end + alias_method :new, :build def create!(attrs = nil) @@ -37,6 +42,7 @@ module ActiveRecord protected def create_record(attrs, force = true) + ensure_not_nested ensure_owner_is_not_new transaction do @@ -60,6 +66,8 @@ module ActiveRecord end def insert_record(record, force = true, validate = true) + ensure_not_nested + if record.new_record? if force record.save! @@ -75,6 +83,8 @@ module ActiveRecord # TODO - add dependent option support def delete_records(records) + ensure_not_nested + klass = @reflection.through_reflection.klass records.each do |associate| klass.delete_all(construct_join_attributes(associate)) |