我正在尝试为我的用户创建不同的个人资料类型。
我有一个用户模型。
User
类型与Profile
相关,因此has_one :profile
但Page
类型与Page
相关,因此has_one :page
< / p>
但是,我正在为两者使用相同的User
表,我正在设置帐户类型。
我想知道,如何根据我的用户帐户类型确定该关系
用户模型has_one:个人资料个人资料belongs_to:用户页面belongs_to:用户帐户类型是“用户”(转到配置文件模型)或“页面”(转到页面模型)。
class User < ActiveRecord::Base
has_one :profile, :class_name => 'Here it should be either PROFILE or PAGE'
end
class Profile < ActiveRecord::Base
belongs_to :user
end
class Page < ActiveRecord::Base
belongs_to :user
end
我一直在阅读API,并发现:class_name,现在我的挑战是动态确定它。
编辑了一下Page模型和用户模型。
答案 0 :(得分:1)
也许proc
有效?
class User < ActiveRecord::Base
TYPES = { 'user' => 'Profile', 'page' => 'Page' }
has_one :profile, :class_name => proc { TYPES[self.type].constantize }
end
如果这有效,请考虑添加一个表来存储用户类型:
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