在Ruby on Rails中,创建和创建之间有什么区别! 和API文档没有它?

ActiveRecord已create ,有些人使用create! ……这是create! 可以在create引发exception吗? 我找不到create! 在当前的Rails API文档中……

是的, create! 将失败时引发exception, create just返回false。 这里的文件:

http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#method-i-create-21

是。 如果记录无效,则会引发exception。

我在Rails 4.2.0测试过它。 在这个版本的Rails中,似乎是#create! 如在另一个答案中所述,但不是#create方法。

#create

如果validation通过,则创建一个对象(或多个对象)并将其保存到数据库。 无论对象是否已成功保存到数据库, 都会返回结果对象

根据文档,这里有一些尝试。

 Arup-iMac:rails_app_test shreyas$ rails c Loading development environment (Rails 4.2.0) [1] pry(main)> show-models Person Person id: integer name: string created_at: datetime updated_at: datetime [2] pry(main)> Person.create! (0.1ms) begin transaction (0.1ms) rollback transaction ActiveRecord::RecordInvalid: Validation failed: Name can't be blank, Name is too short (minimum is 3 characters) from /Users/shreyas/.rvm/gems/ruby-2.1.5@rails_app_test/gems/activerecord-4.2.0/lib/active_record/validations.rb:79:in `raise_record_invalid' [3] pry(main)> Person.create (0.1ms) begin transaction (0.0ms) rollback transaction => # [4] pry(main)> Person.count (0.2ms) SELECT COUNT(*) FROM "people" => 0 [5] pry(main)>