2011-02-15 15 views
10

ActiveRecord create है और कुछ लोग create! का उपयोग करते हैं ... क्या यह create! अपवाद बढ़ा सकता है जबकि create नहीं है? मैं में create! वर्तमान रेल एपीआई डॉक्स ...रेल पर रूबी में, बनाने और बनाने के बीच क्या अंतर है! और एपीआई दस्तावेज़ों में यह नहीं है?

उत्तर

17

हाँ, create! नहीं मिल विफलता पर एक अपवाद बढ़ा देंगे कर सकते हैं, create सिर्फ झूठी देता है। यहाँ प्रलेखन:

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

+0

मैं http://api.rubyonrails.org/classes/ActiveRecord/Base.html देख रहा था और यह नहीं मिल सकता है ... शायद वहाँ अपने पृष्ठ –

+1

@ 動靜 能量 के लिए लिंक होना चाहिए: आप हमेशा [आरओआर विधि सूचकांक] (http://api.rubyonrails.org/fr_method_index.html) देख सकते हैं। जब आप api.rubyonrails.org पर जाते हैं तो यह निचला बाएं हाथ का फ्रेम होता है – cam

1

हां। यदि रिकॉर्ड अमान्य है तो एक अपवाद उठाया जाता है।

1

मैंने इसे रेल 4.2.0 में परीक्षण किया है। रेल के इस संस्करण में, ऐसा लगता है, #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/[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)> 
संबंधित मुद्दे