mergeについて

掲示板に対し、コメントを投稿する機能を追加しました。その時にcomments_controller.rbで使用したmergeについて解説します。


comments_controller.rb内の内容

def comment_params
  params.require(:comment).permit(:body).merge(board_id: params[:board_id])
end

ストロングパラメータの最後に記載されているmergeってなんだろう? プロを目指す人のためのRuby入門(通称チェリー本)で調べてみました。


チェリー本より引用

h = { us: 'dollar', india: 'rupee' }
{ japan: 'yen' }.merge(h) #=> { :japan=>"yen", :us=>"dollar", :india=>"rupee" }

変数hのキーと値を展開させると書いていました。


mergeする理由

レコード作成時に追加したい値はmergeメソッドで追加しておけば、合わせてそれの処理してくれます。 Image from Gyazo
コメントする時に、bodyにコメント内容が、board_idにコメントするボードのidが入ります。