mayuowl / filmarks_app

0 stars 0 forks source link

add movie_directors_controller and fix routes #36

Closed mayuowl closed 5 years ago

mayuowl commented 5 years ago

概要

  1. movie_directors_controller 作成(ユーザー用・管理者用)
  2. routes 追記

上記作成しました。 ご確認の程、よろしくお願いいたします。

mayuowl commented 5 years ago

修正

  1. create アクションのパラメータを追記しました。
  2. show アクションのパラメータを修正しました。

質問

  1. @director = MovieDirector.create(params[:movie_director])としたのですが、正しいでしょうか・・・ 「movie_directorモデルで、バリデーションを指定していないので、ストロングパラメータを使用しない」という認識なのですが、合っていますでしょうか?
  1. 今更なのですが、createアクションに以下のように書かれていることが多いのですが、.create!との違いはあるのでしょうか?

def create @director = MovieDirector.new(:movie_director) @director.save! end

take-off-rails commented 5 years ago

@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! は同じです!

take-off-rails commented 5 years ago

movie_directorモデルで、バリデーションを指定していないので、ストロングパラメータを使用しない

あ、すみません、読み間違えてました。 strong_parameter は model の validation とは関係がないです。

外部からのパラメータ送信で、意図しないパラメータ(例えば created_at)などを指定できないようにするために、strong_paramete が存在します。

なので、今回の場合もしっかり設定してあげなければならないです。

mayuowl commented 5 years ago

外部からのパラメータ送信で、意図しないパラメータ(例えば created_at)などを指定できないようにするために、strong_paramete が存在します。

なるほど! ストロングパラメータの意味を勘違いしていました。

new してから save! するのと、 create! は同じです! こちらも理解しました!ありがとうございます。

修正

  1. ストロングパラメータを追加(movie_director_params )
  2. createアクションのパラメータを修正
mc-chinju commented 5 years ago

routes.rb がコンフリクトしているので、その解消だけお願いします! local の master を最新状態にしたうえで、このブランチに master を rebase すればいけると思います!