Неинициализированная константа Rails в полиморфной ассоциации
-
12-12-2019 - |
Вопрос
Я работаю над созданием полиморфной ассоциации телефонного номера с волонтером (а позже и с другими вещами), в настоящее время я столкнулся со следующей ошибкой:
uninitialized constant HumanVolunteer::PrimaryPhone
app/controllers/human_volunteers_controller.rb:44:in `new'
app/controllers/human_volunteers_controller.rb:44:in `create'
Вот моя модель телефонных номеров:
class PhoneNumber < ActiveRecord::Base
attr_accessible :notes, :number
belongs_to :phone, :polymorphic => true
end
И вот моя модель HumanVolunteers:
class HumanVolunteer < ActiveRecord::Base
attr_accessible :firstName, :lastName, :homeaddressid, :notes, :status, :workdaddressid, :home_adr, :work_adr, :primaryPhone
has_one :primaryPhone, :as => :phone
def home_adr=(home_adr_arg)
# Home ADR
home_adr = Address.new(home_adr_arg)
if home_adr.save
self.homeaddressid = home_adr.id
end
end
def work_adr=(work_adr_arg)
# Work ADR
work_adr = Address.new(work_adr_arg)
if home_adr.save
self.workaddressid = work_adr.id
end
end
end
И моя схема для телефонных номеров и human_volunteers:
Стол:люди-добровольцы
id integer
status character varying(255)
homeaddressid integer
workdaddressid integer
notes text
created_at timestamp without time zone
updated_at timestamp without time zone
firstName character varying(255)
lastName character varying(255)
Стол:телефонные номера
id integer
number character varying(255)
notes text
created_at timestamp without time zone
updated_at timestamp without time zone
phone_id integer
phone_type character varying(255)
Ошибка возникает, когда я пытаюсь создать нового добровольца при любых входных данных вот мой текущий пример запроса:
{"human_volunteer"=>{"primaryPhone"=>"5555555555",
"firstName"=>"",
"notes"=>"",
"work_adr"=>{"city"=>"",
"state"=>"",
"zipcode"=>"",
"line1"=>"",
"line2"=>""},
"home_adr"=>{"city"=>"",
"state"=>"",
"zipcode"=>"",
"line1"=>"",
"line2"=>""},
"lastName"=>""},
"authenticity_token"=>"RCPTxZpzytYXcDEUo0czRxpI4A3Qw1ErwcIBJ92RhLA=",
"utf8"=>"✓"}
записка:у меня также есть класс address, но он у меня уже работает, поэтому я не стал загромождать им этот пост.
Из просмотра на форуме показалось, что главной проблемой для других была плаурализация, но, насколько я могу судить, у меня все плаурализовано правильно.
Я также попытался добавить phone_id или primaryPhone_id в таблицу human volunteers, но это не помогло.
Большое спасибо, - Кен
Решение
Ваш has_one
нужно знать, к какому классу он относится.
has_one :primary_phone, :class_name => "PhoneNumber", :as => :phone