activerecord - Rails find_or_create_by where block runs in the find case? -


गतिशील खोजक विधि द्वारा ActiveRecord find_or_create_ मुझे एक ब्लॉक निर्दिष्ट करने की अनुमति देता है I दस्तावेज़ीकरण इस पर स्पष्ट नहीं है, लेकिन ऐसा लगता है कि ब्लॉक केवल बनाने के मामले में चलाता है, और नहीं ढूँढ मामले में। दूसरे शब्दों में, यदि रिकॉर्ड मिल गया है, ब्लॉक नहीं चल रहा है। मैंने इसे इस कंसोल कोड के साथ परीक्षण किया है:

  User.find_or_create_by_name ("एक मौजूदा नाम") क्या करें | u | "मैं एम ब्लॉक में" एंड   

डालता है (कुछ भी नहीं मुद्रित किया गया था)। क्या दोनों ही मामलों में ब्लॉक चलाने का कोई तरीका है?

जहां तक ​​मैं समझता हूं ब्लॉक हो जाएगा निष्पादित अगर कुछ भी नहीं मिला इसके उपयोग का उपयोग इस प्रकार दिखता है:

  User.find_or_create_by_name ("पेड्रो") करना | u | U.money = 0 u.country = "मेक्सिको" डालता है "यूजर बनाया है" एंड   

अगर उपयोगकर्ता नहीं मिला है तो यह नया उपयोगकर्ता "पेड्रो" नाम के साथ आरंभ करेगा और यह सब सामान ब्लॉक के अंदर और नए बनाए गए उपयोगकर्ता वापस आएंगे I अगर उपयोगकर्ता मौजूद है तो ब्लॉक को निष्पादित किए बिना ही यह उपयोगकर्ता वापस लौटाएगा।

इसके अलावा आप "ब्लॉक स्टाइल" का उपयोग अन्य तरीके जैसे कर सकते हैं:

  User.create do | u | यू.नाम = "पेड्रो" यू.एमनी = 1000 एंड   

यह ऐसा करेगा जैसा कि User.create (: name = & gt; "पेड्रो",: money = & gt; ; 1000) लेकिन बहुत कम दिखता है

और

  User.find (19) do | u | .. अंत   

आदि

Comments

Popular posts from this blog

qt - switch/case statement in C++ with a QString type -

python - sqlite3.OperationalError: near "REFERENCES": syntax error - foreign key creating -

Python's equivalent for Ruby's define_method? -