学習記録
2020-04-30に更新

Railsチュートリアルの勉強中。

10.3.2 サンプルのユーザー

調べたこと

create!メソッドとはcreateと何が違うのか。
チュートリアルには「create!は基本的にcreateメソッドと同じものですが、ユーザーが無効な場合にfalseを返すのではなく例外を発生させる (6.1.4) 点が異なります。」とあるが、実際に調べた。

create!で調べると複数候補が出る。
 https://api.rubyonrails.org/
複数候補が出たのでメソッドの定義元を知りたいが、
調べ方がわからない。

source_locationメソッドを使えば定義元がわかるらしい。

実際に実行すると下記の結果が得られた。

irb(main):003:0> User.method(:create!).source_location
=> ["/Users/user/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/activerecord-5.2.4.2/lib/active_record/persistence.rb", 48]

上の結果には「persistence.rb」とあるので下記のURLを参考にしてみる。
https://api.rubyonrails.org/classes/ActiveRecord/Persistence/ClassMethods.html#method-i-create-21

先のURLには「Raises a RecordInvalid error if validations fail, unlike Base#create.」とあるので、create!とcreateの違いは例外を出すか出さないかという点だろうか。


dychw
学習記録
所有者限定モードのためこのボードには投稿できません
コメント
学習記録