mam konfiguracja systemu dostępu Controll rola opiera się z następujących modeli:Czy można utworzyć skojarzenie warunkowe w modelu?
- Rola (jako STI),
- UserRole (globalne role) (specyficzne role projektowe)
- ProjectRole
- Przypisanie (Polimorficzne z różnymi zasobami)
- Użytkownik
- Proj ect (jako jeden typ zasobów dla przydziałów)
Użytkownicy mogą ponosić odpowiedzialność za projekt, jeśli mają określoną UserRole. Ta Userrole jest nazwą "odpowiedzialną za projekty" i ma identyfikator 2.
W modelu użytkownika istnieją dwa skojarzenia has_many: odpowiedzialne_wymiary i odpowiedzialne_projekty. Ta asocjacja jest ważna tylko wtedy, gdy użytkownik ma "Role użytkownika" odpowiedzialny za projekty "o identyfikatorze 2.
Czy można utworzyć skojarzenie warunkowe w modelu użytkownika dla powiązania_odpowiedzialnego * i czy jest to popularny sposób konfigurowania tego rodzaju stosunków?
Jaka jest najlepsza praktyka rozwiązywania tego rodzaju problemów?
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
...
Co masz na myśli przez stowarzyszenie warunkowego ? Jakie są warunki? – Yanhao
Warunek: jeśli użytkownik nie ma roli o identyfikatorze 2, powiązania_odpowiedzi_ * są nieprawidłowe/nie powinny być ustawione. – tonymarschall