1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/activerecord/test/models/car.rb
Ryuta Kamizono cad0b7d91d Fix touch option to behave consistently with Persistence#touch method
`touch` option was added to `increment!` (#27660) and `update_counters`
(#26995). But that option behaves inconsistently with
`Persistence#touch` method.

If `touch` option is passed attribute names, it won't update
update_at/on attributes unlike `Persistence#touch` method.

Due to changed from `Persistence#touch` to `increment!` with `touch`
option, #31405 has a regression that `counter_cache` with `touch` option
which is passed attribute names won't update update_at/on attributes.

I think that the inconsistency is not intended. To get back consistency,
ensure that `touch` option updates update_at/on attributes.
2018-06-18 19:08:41 +09:00

33 lines
978 B
Ruby

# frozen_string_literal: true
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") }
attribute :wheels_owned_at, :datetime, default: -> { Time.now }
end
class CoolCar < Car
default_scope { order("name desc") }
end
class FastCar < Car
default_scope { order("name desc") }
end