ruby-on-rails - Rails 中的可选或条件模型关联

标签 ruby-on-rails activerecord associations belongs-to has-one

我有一个用户模型。
用户可以拥有以下 3 个角色之一:role1、role2、role3。这由用户模型中的“角色”列表示。
每个角色都有一个独特的配置文件。 role1_profile、role2_profile、role3_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

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

最佳答案

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

User 之间有一个多态关联怎么样?以及各种角色简介?

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

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

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

无论您做什么,您都需要在任何使用它的地方检查用户的角色或 role_profile。

关于ruby-on-rails - Rails 中的可选或条件模型关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7733341/

相关文章:

javascript - 简单模式弹出窗口?

ruby-on-rails - Rails 中带有 has_one 的嵌套路由

uml - 我可以在类图中包含一个独立的类吗?

ruby-on-rails - 从关联中序列化不可变数据是个好主意吗?

ruby-on-rails - 在 ruby​​ 中迭代数组并使用给定字符串搜索匹配元素

javascript - AJAX POST 请求上没有方法错误

mysql - 在 Codeigniter 中选择具有事件记录的当前用户

ruby-on-rails - 如何在没有 Rails 的情况下使用事件记录

ruby-on-rails - 添加快捷方式还是遵循 ActiveRecord 语义?

php - 在 CakePHP 3 中更新/插入关联表数据