特定のステータスが与えられた場合、そのステータスは二度と変更できないモデルがあります。モデルに before_save を入れてステータスを確認し、特定のステータスに設定されている場合は例外を発生させることで、これを達成しようとしました。
問題はこれです -
def raise_if_exported
if self.exported?
raise Exception, "Can't change an exported invoice's status"
end
end
これは正常に動作しますが、最初に次のようにしてステータスをエクスポートに設定したとき-
invoice.status = "Exported"
invoice.save
ステータスがすでにdbではなくモデルにエクスポートされているため、例外が発生します(私は思う)
「エクスポート済み」に設定された属性が変更されないようにする方法はありますか?