mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
359adaedd9
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))
29 lines
898 B
Ruby
29 lines
898 B
Ruby
class Car < ActiveRecord::Base
|
|
has_many :bulbs
|
|
has_many :all_bulbs, -> { unscope where: :name }, class_name: "Bulb"
|
|
has_many :funky_bulbs, class_name: 'FunkyBulb', dependent: :destroy
|
|
has_many :failed_bulbs, class_name: 'FailedBulb', dependent: :destroy
|
|
has_many :foo_bulbs, -> { where(:name => 'foo') }, :class_name => "Bulb"
|
|
has_many :awesome_bulbs, -> { awesome }, class_name: "Bulb"
|
|
|
|
has_one :bulb
|
|
|
|
has_many :tyres
|
|
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) }
|
|
|
|
scope :order_using_new_style, -> { order('name asc') }
|
|
end
|
|
|
|
class CoolCar < Car
|
|
default_scope { order('name desc') }
|
|
end
|
|
|
|
class FastCar < Car
|
|
default_scope { order('name desc') }
|
|
end
|