Tôi có một mô hình người dùng. Người dùng có thể có 1 trong 3 vai trò: role1, role2, role3. Điều này được thể hiện bằng cột 'vai trò' trong mô hình người dùng. Mỗi vai trò có một cấu hình duy nhất. role1_profile, role2_profile, role3_profile. Mỗi * _profile là một mô hình.Các liên kết mô hình tùy chọn hoặc có điều kiện trong Rails
Làm cách nào để thể hiện liên kết tùy chọn này trong Rails?
Tôi đã thử nó hai cách khác nhau:
class User < ActiveRecord::Base
#FIRST WAY
if current_user.role == 'role1' then has_one :role1_profile end
#SECOND WAY
has_one :role1_profile, :conditions => ['user.role = ?', 'role1']
end
Nhưng điều đó không làm việc. Cách đúng để làm điều này là gì?
+1 vì tôi quá lười để nhập mã. –
Cảm ơn bạn! Tôi nghĩ rằng giải pháp của bạn là hoàn hảo. Luôn luôn có một cách trong Rails, nhưng khi bạn không biết cách, bạn có xu hướng thực hiện một giải pháp một cách kỳ lạ. – hrdwdmrbl
@jackquack Tôi không nghĩ rằng cách tiếp cận của bạn là lạ cả. Hoàn toàn ngược lại, nó rất hợp lý. Và nó cũng có thể chỉ ra một nơi mà ActiveRecord có thể được cải thiện/mở rộng. Dù sao, tôi vui vì bạn có những thứ làm việc. –