実現したいこと
普通のCRUDをrailsのAPIで作ってます。
createがこんな感じです。
paramsでstatus_id渡された時、自動でstatusをidから検索し、同じモデルのstatusカラムに値をセットしたい。
ruby
1test = Test.new(params) 2# ここでtestのstatusとstatus_id両方に値が入って欲しい 3logger.debug(test)
ruby
1class Tesr < ApplicationRecord 2 def status_id=(status_id) 3 write_attribute(:status_id, status_id) 4 if status_id.present? 5 self.status = Status.find(status_id).name 6 end 7 end 8end
前提
ここに質問の内容を詳しく書いてください。
(例)
TypeScriptで●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
コントローラーのログを見ると、
status_idに値が入るがstatusに値がない。
セッターメソッド自体は処理を通っていて、セッタメソッドの処理終了時はstatusに値が入っているが呼び出しもとのコントローラーに戻ってきた時点でstatusがnilに戻ってた
試したこと
セッターメソッドの処理内容をコントローラーに書いたら想定通り動いた。
なぜ呼び出し元に戻ると値が消えるのかなぞ。インスタンス変数じゃないから?
補足情報(FW/ツールのバージョンなど)
ruby 3
rails 7
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/11/16 03:55