2011-02-15 16 views

Trả lời

17

Có, create! sẽ tăng ngoại lệ về lỗi, create chỉ trả về sai. Tài liệu tại đây:

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

+0

tôi đang tìm kiếm tại http://api.rubyonrails.org/classes/ActiveRecord/Base.html và không thể tìm thấy nó ... có lẽ nên có liên kết đến trang của bạn –

+1

@ 動靜 能量: bạn luôn có thể xem [chỉ mục phương pháp RoR] (http://api.rubyonrails.org/fr_method_index.html). Đây là khung bên trái phía dưới khi bạn truy cập api.rubyonrails.org – cam

1

Có. Một ngoại lệ được nêu ra nếu bản ghi không hợp lệ.

1

Tôi đã thử nghiệm nó trong Rails 4.2.0. Trong phiên bản Rails này, có vẻ như, #create! hoạt động như đã nói trong câu trả lời khác, nhưng không phải là phương pháp #create.

#create

tạo ra một đối tượng (hoặc nhiều đối tượng) và lưu nó vào cơ sở dữ liệu, nếu hợp lệ vượt qua. Đối tượng kết quả được trả về cho dù đối tượng đã được lưu thành công vào cơ sở dữ liệu hay không.

Đây là một số thử theo tài liệu.

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/[email protected]_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)> 
Các vấn đề liên quan