Я пытаюсь создать API ROR, чтобы пользователи могли обновлять определенный продукт (содержит атрибуты заголовка и категорий), этот продукт имеет много- многие ассоциации с категорией объекта следующим образом:Использование атрибута ROR touch с собственностью own_to не работает, когда он используется в таблице соединений
class Product < ApplicationRecord
validates :headline, presence: true
has_many :product_categories, dependent: :destroy
has_many :categories, through: :product_categories
class Category < ApplicationRecord
validates :name, presence: true
has_many :product_categories, dependent: :destroy
has_many :products, through: :product_categories
accepts_nested_attributes_for :product_categories
class ProductCategory < ApplicationRecord
belongs_to :category
belongs_to :product, touch: true
Я хочу изменить поле updated_at в модели продукта всякий раз, когда любое изменение произошло в это атрибут или даже какой-либо из его ассоциации (я использовал атрибут сенсорную в belong_to в ассоциация ProductCategory), но всякий раз, когда я пытался обновить атрибут категории в объекте продукта, категории обновляются в модели ProductCategory, но поле updated_at в модели продукта не изменяется на текущее время, и метод обратного вызова after_touch не вызывается.
Чтобы исправить это, я добавил self.touch в after_save метод:
after_save do
self.touch if !self.changed? && self.categories_changed?
end
ли сенсорный атрибут работы в соединительной таблице (если это многие-ко-многим) отношение?
Спасибо за ваш ответ, на самом деле это всего лишь фрагмент моего кода. Модель ProductCategory имеет другой код. –
Я вижу, что вы используете has_many. И если ваш вопрос будет решен, можете ли вы принять мой ответ? – YTorii