Как всегда сохранять вложенные элементы в приложении Rails (даже если они не были изменены)? - PullRequest
0 голосов
/ 30 апреля 2020

В моем приложении на Rails 6 есть такая ассоциация:

class Project < ApplicationRecord

  has_many :tasks, :dependent => :destroy, :autosave => true

  accepts_nested_attributes_for :tasks, :allow_destroy => true

end

Прямо сейчас, когда я сохраняю project вместе с его вложенным tasks, задачи обновляются только когда хотя бы одна из их атрибуты изменяются.

По причинам, которые очень специфичны c для моего приложения / варианта использования, я хочу, чтобы tasks до всегда обновлялось в базе данных, хотя (даже если ни один из них не изменился вообще!) когда я нажал save.

Как этого можно достичь?

Я надеялся, что добавление :autosave => true будет иметь значение, но, к сожалению, это не так .

1 Ответ

0 голосов
/ 30 апреля 2020

Вы можете сделать обратный вызов в проекте:

class Project < ApplicationRecord

  before_save :touch_tasks

  def touch_tasks
    tasks.all.touch_all
  end
end

https://apidock.com/rails/ActiveRecord/Relation/touch_all

...