Как проверить, столбец может быть обновлен один раз? - PullRequest
0 голосов
/ 19 января 2019

У меня есть модель соглашения, и в ней есть столбец released_at.Я хочу подтвердить, что соглашение может быть выпущено один раз. Как я могу это сделать?

Контроллер:

 # GET /aggreements/1/release
 def release
   @agreement.update(released_at: Time.now.utc)

   if @agreement.save
     render json: {success: ["Agreement released."]}
   else
     render json: @agreement.errors, status: :unprocessable_entity
   end
 end    

Модель:

class Agreement < ApplicationRecord
  validate :released_agreement_cannot_be_released

  def released_agreement_cannot_be_released
    if released_at.present?
      errors.add(:released_at, "already released")
    end
  end
end

Спасибо.

1 Ответ

0 голосов
/ 19 января 2019

Я понял, вот решение.

Контроллер:

 # GET /agreements/1/release
 def release
   @agreement.released_at = Time.now.utc

   if @agreement.save
     render json: {success: ["Agreement released."]}
   else
     render json: @agreement.errors, status: :unprocessable_entity
   end
 end    

Модель:

class Agreement < ApplicationRecord
  validate :released_agreement_cannot_be_released

  def released_agreement_cannot_be_released
    if released_at_was.present?
      errors.add(:released_at, "already released")
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...