validation - In rails, how can I have a unique constraint on a has many through association -


मेरे पास निम्न है:

  class A & lt; सक्रिय ... has_many: bs has_many: सीएस, के माध्यम से:: बीएस स्वीकार करता है_सेंटेड_एटी के लिए योगदानः bs स्वीकृत करता है_एस्टेड_एटी के लिए योगदानः cs end clas B & lt; सक्रिय ... संबंधित_तो: एक संबंधित_तो: b accepts_nested_attributes_for: cs end class C & lt; सक्रिय ... has_many: bs has_many: as, through:: bs end   

मैं एक विशिष्टता बाधा जोड़ना चाहता हूं ताकि A.cs के सेट कर सकें कभी भी दोहराया नहीं जा सकता इसका मतलब यह है कि कोई दो नहीं है जैसा कि उनसे संबंधित सीएस का एक ही सेट हो सकता है। यदि यह ए मौजूद है:

  एफ़ीरस। सिंबल (: कुंजी) = & gt; ['सी 1', 'सी 2']   

तब कोई अन्य ए नहीं हो सकता है [ए 'सी 1', 'सी 2'] जिसे पहले ए हटा दिया गया है या अपडेट किया गया है। >

मैं 2 तरीकों के बारे में सोच सकता हूं, लेकिन एक रेल मार्ग है:

1) एक 'सीएस' कॉलम को जोड़कर A तालिका का मानकीकृत करें जिसमें सभी की एक स्ट्रिंग है प्रत्येक A वस्तु से संबंधित सीएस , फिर उस नए 'सीएस' कॉलम पर बाधा डाल दीजिए।

2) सभी मौजूदा को के रूप में संसाधित करें और प्रत्येक के नए a

की तुलना करें सबसे बड़ी समस्या यह है कि के रूप में a = एcreate (bs_attributes: [{cs_attributes: {...} के रूप में nested_attributes_for का उपयोग करते समय बीएस और सीएस }, {cs_attributes: {...}}] को a.cs को तब तक पॉप्युलेट नहीं किया जाएगा जब तक कि a नहीं बना और उस समय यह भी हो सत्यापन के लिए कॉलबैक करने में देर हो गई।

बी में, आप

  मान्य करता है: c_id,: विशिष्टता = & gt; {: क्षेत्र = & gt; : a_id}    

Comments

Popular posts from this blog

Java - Error: no suitable method found for add(int, java.lang.String) -

java - JPA TypedQuery: Parameter value element did not match expected type -

c++ - static template member variable has internal linkage but is not defined -