tôi đã thiết lập một vai trò dựa trên hệ thống truy cập controll với các mô hình sau:Có thể tạo ra một liên kết có điều kiện trong mô hình không?
- Vai trò (như STI),
- UserRole (vai trò toàn cầu) (vai trò cụ thể dự án)
- ProjectRole
- Chuyển nhượng (Đa hình với các tài nguyên khác nhau)
- Người dùng
- Proj ect (như một loại tài nguyên cho các bài tập)
Người dùng chỉ được phép chịu trách nhiệm về dự án nếu họ có UserRole cụ thể. Userrole này là tên "chịu trách nhiệm về dự án" và có ID 2.
Trong mô hình người dùng có hai liên kết has_many: responsibility_assignments và responsibility_projects. Kết hợp này chỉ hợp lệ nếu người dùng có UserRole "chịu trách nhiệm cho dự án" có ID 2.
Có thể tạo liên kết có điều kiện trong mô hình người dùng cho liên kết chịu trách nhiệm không? quan hệ?
Cách tốt nhất để giải quyết loại vấn đề này là gì?
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
...
Ý anh là gì bởi một hiệp hội có điều kiện ? Điều kiện là gì? – Yanhao
Điều kiện là: nếu người dùng không có vai trò với id 2, trách nhiệm_ * liên kết không hợp lệ/không nên được đặt. – tonymarschall