我有一个多态关联,其中管理员和开发人员各有一个用户(用于通用身份验证机制)
开发者.rb
class Developer < ActiveRecord::Base
attr_accessible :skype_name
has_one :user, :as => :profile, :dependent => :destroy
accepts_nested_attributes_for :user
end
Admin.rb相同,但没有添加任何新属性
用户.rb
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation, :profile_id, :profile_type
has_secure_password
belongs_to :profile, :polymorphic => true
before_save { |user| user.email = email.downcase }
... some validations for unique email and before_save stuff ...
end
当我通过 rails 控制台创建开发人员或管理员时,User.profile_id 始终是唯一的,它与我刚刚创建的开发人员或管理员相同。它似乎也与这里的图表相匹配
如果我有一个带有profile_type
=的用户Developer
,并且我想获得对开发人员的引用,那么通过调用获得引用是否安全,Developer.find(u.profile_id)
对于管理员也是如此?如果没有,那么我怎样才能安全地做到这一点?
它目前有效,但我不确定这是否只是幸运,因为我的桌子很小。