在我的 rails 3.2 应用程序中,我有一个 User 模型和一个 Physician 模型,它们具有以下多态关联:
用户
class User < ActiveRecord::Base
attr_accessible :authenticatable_id, :authenticatable_type, :email
belongs_to :authenticatable, polymorphic: true
end
医师
class Physician < ActiveRecord::Base
attr_accessible :name
has_one :user, as: :authenticatable
end
我想在控制台中测试这些并遇到了一个奇怪的事情。正在做:
p = Physician.new
p.user.build
给了我NoMethodError: undefined method 'build' for nil:NilClass
-但是为什么医生的用户属性是nil
?
奇怪的是,当我将医生模型更改为has_many :users
而不是has_one :user
做
p = Physician.new
p.users.build
一切正常。
has_one
为了让协会运作,我缺少什么?