Closed mayuowl closed 5 years ago
@director = MovieDirector.create(params[:movie_director])
としたのですが、正しいでしょうか・・・
「movie_directorモデルで、バリデーションを指定していないので、ストロングパラメータを使用しない」という認識なのですが、合っていますでしょうか?.create!
との違いはあるのでしょうか?def create @director = MovieDirector.new(:movie_director) @director.save! end
@mayuowl
movie_directorモデルで、バリデーションを指定していないので、ストロングパラメータを使用しない
あってます!具体的には以下のような感じです。
def create
@director = MovieDirector.new(movie_director_params)
@director.save!
end
private
def movie_director_params
params.require(:movie_director).permit(:movie_id, :cast_id)
end
今更なのですが、createアクションに以下のように書かれていることが多いのですが、.create!との違いはあるのでしょうか?
new してから save! するのと、 create! は同じです!
movie_directorモデルで、バリデーションを指定していないので、ストロングパラメータを使用しない
あ、すみません、読み間違えてました。 strong_parameter は model の validation とは関係がないです。
外部からのパラメータ送信で、意図しないパラメータ(例えば created_at)などを指定できないようにするために、strong_paramete が存在します。
なので、今回の場合もしっかり設定してあげなければならないです。
外部からのパラメータ送信で、意図しないパラメータ(例えば created_at)などを指定できないようにするために、strong_paramete が存在します。
なるほど! ストロングパラメータの意味を勘違いしていました。
new してから save! するのと、 create! は同じです! こちらも理解しました!ありがとうございます。
routes.rb がコンフリクトしているので、その解消だけお願いします! local の master を最新状態にしたうえで、このブランチに master を rebase すればいけると思います!
概要
上記作成しました。 ご確認の程、よろしくお願いいたします。