この書き方が気持ち悪く感じます。
user = User.create( email: 'sample@sample.com', username: 'sample', password: 'password', password_confirmation: 'password' ) do | user | puts "\"#{user.username}\" が作成されました" end
なぜ、User.createした後にブロックを置けるのでしょうか?
Userモデルに対してブロックを渡しているので、
下記とやっていることと同じなのでは?と思ってしまいます。(エラーになりますが)
user = User.create( email: 'sample@sample.com', username: 'sample', password: 'password', password_confirmation: 'password' ) user do |user| puts "\"#{user.username}\" が作成されました" end
追記
ご回答ありがとうございます。
新たに疑問が2つ生まれました。
ここの第一引数ですが、ハッシュですよね?
( email: 'sample@sample.com', username: 'sample', password: 'password', password_confirmation: 'password' )
①Rubyでは、引数リストの最後がHashの場合は、{}を省略することができる認識です。
今回は第一引数なのになぜ省略できるのかが疑問です。
②ブロック部分がcreateの第二引数になるということは、大きな()が省略されているということですよね。
カッコを省略せず書いた場合は、下記のようになるという認識で合っていますか?
user = User.create( ({ email: 'sample@sample.com', username: 'sample', password: 'password', password_confirmation: 'password' }) do | user | puts "\"#{user.username}\" が作成されました" end )
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/03 09:47