activerecord - Rails find_or_create by more than one attribute? -


सक्रिय-रिकार्ड में एक आसान गतिशील विशेषता है जिसे find_or_create_by कहा जाता है:

Model.find_or_create_by_ & lt ; विशेषता & gt; (: & lt; attribute & gt; = & gt; "")

लेकिन अगर मुझे एक से अधिक विशेषता के आधार को खोजने या बनाने की आवश्यकता हो तो?

मॉडल: समूह और सदस्य के बीच एक एम: एम रिश्ते को संभालने के लिए समूहमैंबर। मैं कई उदाहरण हो सकता है जहां सदस्य_आईडी = 4, लेकिन मैं कभी एक से अधिक बार उदाहरण नहीं चाहता हूं जहां सदस्य_आईडी = 4 और group_id = 7. मैं यह पता लगाने की कोशिश कर रहा हूं कि क्या ऐसा कुछ करना संभव है:

  GroupMember.find_or_create (: member_id = & gt; 4,: group_id = & gt; 7)  

मुझे पता है कि इसे संभालने के लिए बेहतर तरीके हो सकते हैं, लेकिन मुझे यह पसंद है Find_or_create के विचार की सुविधा।

एकाधिक विशेषताओं को और :

  GroupMember.find_or_create_by_member_id_and_group_id (4, 7)  

( find_or_initialize_by का उपयोग करें अगर आप को सहेजना नहीं चाहते हैं

संपादित करें: उपरोक्त विधि रेल 4 में पदावनत है। यह करने का नया तरीका होगा:

  GroupMember जहां (: सदस्य_id = & gt; 4,: group_id = & gt; 7) .first_or_create  

और

  GroupMember.where (: member_id = & gt; 4 ,: समूह_आईडी = & Gt; 7) .first_or_initialize  

संपादित करें 2: इन सभी को केवल रेल विशिष्ट विशेषताओं से बाहर नहीं निकाला गया था

उदाहरण

  GroupMember.find_or_create_by_member_id_and_group_id (4, 7)  

बन गया

प्री> ग्रुपमैम्बर.फंड_ या_कार्टेड_ (सदस्य_आईडी: 4, समूह_आईडी: 7)

Comments

Popular posts from this blog

windows - Heroku throws SQLITE3 Read only exception -

lex - Building a lexical Analyzer in Java -

python - rename keys in a dictionary -