aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/association_relation.rb
diff options
context:
space:
mode:
authorSean Griffin <sean@thoughtbot.com>2015-02-26 12:40:22 -0700
committerSean Griffin <sean@thoughtbot.com>2015-02-26 12:42:55 -0700
commit38218929e9b3205a2a731660b3c5527937e1c015 (patch)
treed5fe509a1750905969eb7f4bfb47a180ac048fd4 /activerecord/lib/active_record/association_relation.rb
parentf069b413216f207056b4e46ba302afc646201c1e (diff)
downloadrails-38218929e9b3205a2a731660b3c5527937e1c015.tar.gz
rails-38218929e9b3205a2a731660b3c5527937e1c015.tar.bz2
rails-38218929e9b3205a2a731660b3c5527937e1c015.zip
Properly create through records when called with `where`
Various behaviors needed by associations (such as creating the through record) are lost when `where` is called, since we stop having a `CollectionProxy` and start having an `AssociationRelation` which does not contain this behavior. I *think* we should be able to rm `AssociationRelation`, but we have tests saying the changes required to do that would be bad (Without saying why. Of course. >_>) Fixes #19073.
Diffstat (limited to 'activerecord/lib/active_record/association_relation.rb')
-rw-r--r--activerecord/lib/active_record/association_relation.rb13
1 files changed, 13 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/association_relation.rb b/activerecord/lib/active_record/association_relation.rb
index f2b44913db..ee0bb8fafe 100644
--- a/activerecord/lib/active_record/association_relation.rb
+++ b/activerecord/lib/active_record/association_relation.rb
@@ -13,6 +13,19 @@ module ActiveRecord
other == to_a
end
+ def build(*args, &block)
+ scoping { @association.build(*args, &block) }
+ end
+ alias new build
+
+ def create(*args, &block)
+ scoping { @association.create(*args, &block) }
+ end
+
+ def create!(*args, &block)
+ scoping { @association.create!(*args, &block) }
+ end
+
private
def exec_queries