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の違いは例外を出すか出さないかという点だろうか。