मैं सेटअप निम्नलिखित मॉडल के साथ एक भूमिका आधारित अभिगम नियंत्रण प्रणाली है:क्या मॉडल में सशर्त सहयोग बनाना संभव है?
- भूमिका (एसटीआई के रूप में),
- UserRole (वैश्विक भूमिकाओं)
- ProjectRole (परियोजना विशिष्ट भूमिकाओं)
- असाइनमेंट (विभिन्न संसाधनों के साथ पॉलिमॉर्फिक)
- उपयोगकर्ता
- प्रोजे ect (असाइनमेंट के लिए एक संसाधन प्रकार के रूप में)
उपयोगकर्ताओं को केवल एक प्रोजेक्ट के लिए जिम्मेदार होने की अनुमति है यदि उनके पास एक विशिष्ट उपयोगकर्ता रोल है। यह उपयोगकर्ता नाम "प्रोजेक्ट्स के लिए ज़िम्मेदार" नाम है और आईडी 2 है।
उपयोगकर्ता मॉडल में दो हैं_मेनी एसोसिएशन हैं: जिम्मेदार_एग्निमेंट्स और जिम्मेदार_प्रोजेक्ट्स। यह संगठन केवल तभी वैध हैं जब उपयोगकर्ता के पास आईडी 2 के साथ "परियोजनाओं के लिए ज़िम्मेदार" उपयोगकर्ता है।
क्या जिम्मेदार_ * एसोसिएशन के लिए उपयोगकर्ता मॉडल में सशर्त सहयोग बनाना संभव है और क्या यह इस तरह के सेटअप के लिए एक आम तरीका है संबंधों का?
समस्याओं इस तरह का हल करने के लिए सबसे अच्छा तरीका क्या है?
class Role < ActiveRecord::Base
has_many :assignments
has_many :users, :through => :assignments
class UserRole < Role
class ProjectRole < Role
class Assignment < ActiveRecord::Base
belongs_to :user
belongs_to :role
belongs_to :resource, :polymorphic => true
class User < ActiveRecord::Base
has_many :assignments
has_many :roles, :through => :assignments,
:class_name => "UserRole"
has_many :responsible_assignments, :class_name => "Assignment",
:conditions => { :role_id => 4 } // specific project role
has_many :responsible_projects, :through => :responsible_assignments,
:source => :resource,
:source_type => 'Project',
:conditions => { :status => 1 } // project is active
...
class Project < ActiveRecord
...
आप एक सशर्त सहयोग से क्या मतलब है ? क्या शर्तें हैं? – Yanhao
शर्त यह है: यदि किसी उपयोगकर्ता के पास आईडी 2 के साथ कोई भूमिका नहीं है, तो जिम्मेदार_ * संघ मान्य नहीं हैं/सेट नहीं किए जाने चाहिए। – tonymarschall