5

我有一个用户模型。用户可以拥有 3 个角色中的 1 个:role1、role2、role3。这由用户模型中的“角色”列表示。每个角色都有一个独特的个人资料。角色 1_profile、角色 2_profile、角色 3_profile。每个 *_profile 都是一个模型。

我如何在 Rails 中表示这个可选关联?

我尝试了两种不同的方式:

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

但这不起作用。这样做的正确方法是什么?

4

2 回答 2

4

关联不是有条件的。保持这种状态可能也是最容易的。

如何User在各种角色配置文件之间建立多态关联?

class User
  belongs_to :role_profile, :polymorphic => true
end

class RoleXProfile
  has_many :users, :as => :role_profile
end

当然,您需要将role_profile_idandrole_profile_type字段添加到您的用户表中。

无论您做什么,您都需要检查用户的角色或角色配置文件,无论您在哪里使用它。

于 2011-10-11T22:55:03.363 回答
4

您可能想要考虑使用多态关联,而只需拥有适当的角色配置文件。

我的理解是相关:conditions模型必须满足的条件(但我可能错了)。

无论如何,我认为你让这变得比实际更困难,并且通过使这些关系有条件来混淆你真正需要的东西。

于 2011-10-11T22:55:14.130 回答