記事の目的
初学者の為、間違っているところはご指摘頂けると幸いです。
備忘録・アウトプット目的で投稿です。
2021/1/10:追記
Qiita初投稿でチェリー本の伊藤さんから記事の間違いを指摘頂きました🙇♂️
##mergeメソッドとは?
ストロングパラメータの設定の最後にでてくるmerge
。
def review_params
params.require(:review).permit(
:memo,
:image)
.merge(user_id:current_user.id) ←これです
end
##mergeメソッドについて(チェリー本より引用)
なんだこのメソッドは?とRailsの参考書等(Railsチュートリアル、現場Rails)等で調べるもない。
チェリー本をみてみると、メソッドについて説明がなされていた。以下、例文と説明。
h = { us: 'dollar', india: 'rupee' }
{ japan: 'yen' }.merge(h) #=> {:japan=>"yen", :us=>"dollar", :india=>"rupee"}
merge
メソッドを使うことによって、ハッシュリテラル内({ japan: 'yen', h}
)のほかのハッシュのキーと値({ us: 'dollar', india: 'rupee' }
)を展開できる。ふむふむ。
##Railsにおけるmergeメソッドを使う意味
で、なんの為のmerge
なんだっけ?
記事をみてみると、「ユーザから受け取ったparams
にはないけれども、レコード作成時に追加したい値がある場合はmerge
メソッドで含めることができる」と書いてあった。
例えば、Review
モデルに関して送られるパラメータ以外にuser_id
を含めたい!そんな時、merge
メソッドを使うわけですね。
def review_params
params.require(:review).permit(
:memo,
:image)
.merge(user_id:current_user.id)
end
チェリー本を見た時、ほかのハッシュのキーと値を展開できるとあるが、「どういう場面で?」と思いながらの「ふむふむ。」だったが、「こう言う時に使えるんだ」と思えました。
チェリー本ありがとう。