Ruby on rails 根据用户类型有一个关系

Ruby on rails 根据用户类型有一个关系,ruby-on-rails,has-one,Ruby On Rails,Has One,我正在尝试为我的用户创建不同的配置文件类型 我有一个用户模型 Usertype有一个Profile相关,所以它有一个:Profile但是,Pagetype有一个Page相关,所以它有一个:Page 但是,我使用相同的User表来处理这两个问题,并且我正在设置帐户类型 我想知道,如何根据我的用户帐户类型确定这种关系 编辑 用户模型有一个:配置文件配置文件所属:用户页面所属:用户帐户类型为“用户”(转到配置文件模型)或“页面”(转到页面模型) class用户'这里应该是profile或PAGE' 结

我正在尝试为我的用户创建不同的配置文件类型

我有一个用户模型

User
type有一个
Profile
相关,所以它
有一个:Profile
但是,
Page
type有一个
Page
相关,所以它
有一个:Page

但是,我使用相同的
User
表来处理这两个问题,并且我正在设置帐户类型

我想知道,如何根据我的用户帐户类型确定这种关系

编辑 用户模型有一个:配置文件配置文件所属:用户页面所属:用户帐户类型为“用户”(转到配置文件模型)或“页面”(转到页面模型)

class用户'这里应该是profile或PAGE'
结束
类配置文件
我读了一些API,发现:class_name,现在我的挑战是动态确定它

编辑
编辑了一点页面模型和用户模型。

也许一个
proc
可以工作

class User < ActiveRecord::Base
  TYPES = { 'user' => 'Profile', 'page' => 'Page' }
  has_one :profile, :class_name => proc { TYPES[self.type].constantize }
end
class用户'Profile','page'=>'page'}
has_one:profile,:class_name=>proc{TYPES[self.type].constantize}
结束

如果这个工作考虑添加一个表来存储用户类型:

class User < ActiveRecord::Base
  TYPES = { 'user' => 'Profile', 'page' => 'Page' }
  has_one :profile, :class_name => proc { TYPES[self.type].constantize }
  belongs_to :user_type
end

class UserType < ActiveRecord::Base
  has_many :users
end
class用户'Profile','page'=>'page'}
has_one:profile,:class_name=>proc{TYPES[self.type].constantize}
属于:用户类型
结束
类UserType
请发布您的模型及其关联。“帐户类型”是指“配置文件”吗?用户模型有一个:配置文件属于:用户页面属于:用户帐户类型要么是“用户”(转到配置文件模型),要么是“页面”(转到页面模型)我读了一些API,发现:class\u name,现在我的挑战是动态地确定它。如果我理解正确,一个
用户
有一个属性
帐户类型
,它是
页面
用户配置文件
?的一个实例!但是,在页面模型中,没有一个:页面。你可以看到我对我的主要帖子所做的更改。提前谢谢你的帮助!那么,如何确定
用户
的帐户类型是
页面
还是
用户档案
?设置用户帐户类型的条件是什么?可能是条件验证也会这样做。:)但是多态性在这种情况下确实是一个很好的选择。是的,但它不应该是另一种方式吗?对不起,我的英语有时限制了我。页面或配置文件属于用户,而不是相反。我尝试了lambda,并将其添加到用户模型:has_one:Profile,:class_name=>(lambda{return TYPES[self.type]})中,看起来它正在发挥作用。但我现在的问题是,Rails如何决定使用什么?我不知道:)你可以提出一个新的问题。考虑把你找到的答案贴在你的问题上,以备将来参考。
class User < ActiveRecord::Base
  TYPES = { 'user' => 'Profile', 'page' => 'Page' }
  has_one :profile, :class_name => proc { TYPES[self.type].constantize }
  belongs_to :user_type
end

class UserType < ActiveRecord::Base
  has_many :users
end