mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
1152219fa2
When we made sure that the counter gets updated in memory, we only did it on the has many side. The has many side only does the update if the belongs to cannot. The belongs to side was updated to update the counter cache (if it is able). This means that we need to check if the belongs_to is able to update in memory on the has_many side. We also found an inconsistency where the reflection names were used to grab the association which should update the counter cache. Since reflection names are now strings, this means it was using a different instance than the one which would have the inverse instance set. Fixes #18689 [Sean Griffin & anthonynavarre]
26 lines
786 B
Ruby
26 lines
786 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_one :bulb
|
|
|
|
has_many :tyres
|
|
has_many :engines, :dependent => :destroy, inverse_of: :my_car
|
|
has_many :wheels, :as => :wheelable, :dependent => :destroy
|
|
|
|
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
|