scaffold機能を初めて使用しています。
deviseで作成したUserのidをSample(何かしら文章を登録するモデル)のaccount_idに入れたいのですが、入れ方がわかりません。
scaffoldを使うと以下のようなメソッドが生成されると思います。
before_action :authenticate_user!, only: [:new, :edit, :create] #中略 def create @sample = Sample.new(samples_params) @sample.save end #中略 private def sample_params params.require(:t_work).permit(:account_id , :title, :content, :subcontent ) end end
createのいち部分省略しましたがscaffoldを実行した時以上のようなcreateメソッドやparamsメソッドが生成されると思います。
createを実行するに辺り、モデルオブジェクトの生成→dbにセーブっていう手法を取ると思います。
deviseのcurrent_userメソッドはログインしているユーザーのモデルオブジェクトを取得できるため、オブジェクトを生成する際に属性の値を指定するよう、Sample.new()の引数にSample.new(:account_id => current_user.id)
のような形で登録(Create)したいのですが、
まずsample_paramsのストロングパラメータのメソッドがnewメソッドの引数となっているため、上記のようなnewメソッドを用いた際の初期値が入れられません。
また、sample_params内のpermitの引数に.permit(:account_id => current_user.id , :title, :content, :subcontent )
と入れてみたのですが、エラーを吐きました。
どのようにすればSampleのaccount_idにdeviseのcurrent_userのidをデフォルト値として入れることができますでしょうか?
調べても分からなかったので、、、
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。