diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2018-05-27 12:06:58 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2018-05-27 12:06:58 +0900 |
commit | 17bf62033edd4f0934c9f4a9e0c7a5f0f765975b (patch) | |
tree | 55ee2fa5fe2730283e6f520e2bb395ad339802db /activerecord/test/models | |
parent | ced783fe74ea8683fbc09812ed0e0cadf449a358 (diff) | |
download | rails-17bf62033edd4f0934c9f4a9e0c7a5f0f765975b.tar.gz rails-17bf62033edd4f0934c9f4a9e0c7a5f0f765975b.tar.bz2 rails-17bf62033edd4f0934c9f4a9e0c7a5f0f765975b.zip |
Fix that association's after_touch is not called with counter cache
Since #31405, using `#increment!` with touch option instead of `#touch`
to touch belongs_to association if counter cache is enabled. It caused
the regression since `#increment!` won't invoke after_touch callbacks
even if touch option is given.
To fix the regression, make `#increment!` invokes after_touch callbacks
if touch option is given.
Fixes #31559.
Fixes #32408.
Diffstat (limited to 'activerecord/test/models')
-rw-r--r-- | activerecord/test/models/topic.rb | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/activerecord/test/models/topic.rb b/activerecord/test/models/topic.rb index 2e386d7669..72699046f9 100644 --- a/activerecord/test/models/topic.rb +++ b/activerecord/test/models/topic.rb @@ -81,6 +81,16 @@ class Topic < ActiveRecord::Base self.class.after_initialize_called = true end + attr_accessor :after_touch_called + + after_initialize do + self.after_touch_called = 0 + end + + after_touch do + self.after_touch_called += 1 + end + def approved=(val) @custom_approved = val write_attribute(:approved, val) |