diff options
author | Philippe Huibonhoa <phuibonhoa@gmail.com> | 2015-11-21 01:58:17 -0800 |
---|---|---|
committer | Philippe Huibonhoa <phuibonhoa@gmail.com> | 2016-02-16 10:41:26 -0800 |
commit | 359adaedd95293af3abde954279ad51e11856d57 (patch) | |
tree | c8b8ada1a07783f0e049f8b94fa283c9d83db19c /activerecord/test/models | |
parent | b0b61b62f9c27eff5b9e0797a0de0d35d64d1620 (diff) | |
download | rails-359adaedd95293af3abde954279ad51e11856d57.tar.gz rails-359adaedd95293af3abde954279ad51e11856d57.tar.bz2 rails-359adaedd95293af3abde954279ad51e11856d57.zip |
Fixed `where` for polymorphic associations when passed an array containing different types.
When passing in an array of different types of objects to `where`, it would only take into account the class of the first object in the array.
PriceEstimate.where(estimate_of: [Treasure.find(1), Car.find(2)])
# => SELECT "price_estimates".* FROM "price_estimates"
WHERE ("price_estimates"."estimate_of_type" = 'Treasure' AND "price_estimates"."estimate_of_id" IN (1, 2))
This is fixed to properly look for any records matching both type and id:
PriceEstimate.where(estimate_of: [Treasure.find(1), Car.find(2)])
# => SELECT "price_estimates".* FROM "price_estimates"
WHERE (("price_estimates"."estimate_of_type" = 'Treasure' AND "price_estimates"."estimate_of_id" = 1)
OR ("price_estimates"."estimate_of_type" = 'Car' AND "price_estimates"."estimate_of_id" = 2))
Diffstat (limited to 'activerecord/test/models')
-rw-r--r-- | activerecord/test/models/car.rb | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/activerecord/test/models/car.rb b/activerecord/test/models/car.rb index 778c22b1f6..0f37e9a289 100644 --- a/activerecord/test/models/car.rb +++ b/activerecord/test/models/car.rb @@ -12,6 +12,8 @@ class Car < ActiveRecord::Base has_many :engines, :dependent => :destroy, inverse_of: :my_car has_many :wheels, :as => :wheelable, :dependent => :destroy + has_many :price_estimates, :as => :estimate_of + scope :incl_tyres, -> { includes(:tyres) } scope :incl_engines, -> { includes(:engines) } |