【发布时间】:2013-01-27 13:05:49
【问题描述】:
在我的 rails 3.2 应用程序中,我有一个用户模型和一个医师模型,它们具有以下多态关联:
用户
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 关联起作用,我缺少什么?
【问题讨论】:
-
你可能应该这样做
p.build_user因为 has_one 没有添加 .build 方法 -
@VadimChumel 太棒了,这正是我所需要的!请将此添加为答案,以便我接受并投票:-)
标签: ruby-on-rails associations polymorphic-associations rails-activerecord has-one