[解決済み] Railsで属性の元の値を取得する方法
2023-01-30 23:13:43
質問
ActiveRecordの属性の元の値(=データベースから読み込まれた値)を取得する方法はありますか?
オブザーバでこのようなものが欲しいのですが
before_save object
do_something_with object.original_name
end
更新時にハッシュテーブルからオブジェクトを削除する(実際にはテーブル内の別のキーに移動させる)タスクです。
どのように解決するのか?
rails 5.1以前
追加
_was
を追加すると、前の値が表示されます。
rails 5.1+の場合
以下のLucas Andradeの回答からコピーしたものです。 : https://stackoverflow.com/a/50973808/9359123
追加
_was
は rails 5.1 で非推奨になりました。
_before_last_save
みたいな感じ。
before_save object
do_something_with object.name_before_last_save
end
データベースで最後に保存する前の名前の値を返します (保存と作成で動作します)
の違いは
_was
と
_before_last_save
というように、ドキュメントによると
_was ソース docs から
def attribute_was(attr)
attribute_changed?(attr) ? changed_attributes[attr] : __send__(attr)
end
最後の保存の前に ソース docs から
def attribute_before_last_save(attr_name)
mutations_before_last_save.original_value(attr_name)
end
関連
-
[解決済み】警告:定数 ::Fixnum は非推奨 新しいモデルを生成するとき
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] 検索 vs 発見する by vs どこに
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] Ruby/RailsでHashからキーを削除して残りのHashを取得する方法は?
-
[解決済み】Railsの認証トークンを理解する
-
[解決済み】ActiveRecord::ReadOnlyRecordのエラーの原因は何ですか?
-
[解決済み] あるモデルが特定のカラム/属性を持っているかどうかを確認するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Railsサーバーがポートはすでに使用されていると言う、そのプロセスを殺すにはどうすればよいですか?
-
[解決済み】Webpacker::Manifest::MissingEntryError【クローズド
-
[解決済み] erbでコメントを追加する最適な方法
-
[解決済み] DestroyとDeleteの違い
-
[解決済み] Paramが無いか、値が空である。ParameterMissing in ResultsController#update
-
[解決済み] 検索 vs 発見する by vs どこに
-
[解決済み] Railsで `before_action` での `only:` はどのように機能するのですか?
-
[解決済み] rspecにおけるassignsの意味
-
[解決済み] Rails / Haml: 投稿フォームを作成するには?
-
[解決済み] Rspec が私のモデルクラスを認識しない。初期化されていない定数エラー