Я проверил это в Rails 4.2.0
. В этой версии Rails, похоже, #create!
работает, как сказано в другом ответе, но не метод #create
.
#create
создает объект (или несколько объектов) и сохраняет его в базе данных, если проверки пройдены. Полученный объект возвращается независимо от того, был ли объект успешно сохранен в базе данных или нет .
Вот некоторые попытки в соответствии с документацией.
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
=> #<Person:0x007fdb4cc5b0a0 id: nil, name: nil, created_at: nil, updated_at: nil>
[4] pry(main)> Person.count
(0.2ms) SELECT COUNT(*) FROM "people"
=> 0
[5] pry(main)>