В моем приложении 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 - person Vadim Chumel   schedule 27.01.2013