掲示板に対し、コメントを投稿する機能を追加しました。その時に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メソッドで追加しておけば、合わせてそれの処理してくれます。
コメントする時に、bodyにコメント内容が、board_idにコメントするボードのidが入ります。