Как обновить один атрибут при изменении другого

MCMatan спросил: 03 ноября 2018 в 08:31 в: ruby-on-rails

Я новичок в Rails и могу понять, что это правильно.

Попытка обновить"complete_at", когда"complete" становится истинным.

Я прочитал это: https://api.rubyonrails.org/classes/ActiveModel/Dirty.html#method-i-oted-3F

и решили добавить колбэк при каждом обновлении или сохранении. Затем проверьте, изменился ли "завершенный" объект, если нет, если это правда, обновите "завершенный_at" до текущей даты.

Метод "check_is_completed" действительно вызывается, но я не могу получить доступ правильные реквизиты и определить, изменились ли они, и получить новое значение

class Task < ApplicationRecord
  belongs_to :user
  validates :name, presence: true  after_save :check_is_completed
  after_update :check_is_completed  private   # This gets called
  def check_is_completed
    # try 1
    # This does not work called
    if @completed.changed?
      if @completed == true
      self.completed_at = Date.new()
      end
    end
    #try 2
    if self.completed_changed?
      if self.completed == true
      self.completed_at = Date.new()
      end
    end
  end
end

0 ответов