Неинициализированная константа Rails в полиморфной ассоциации

StackOverflow https://stackoverflow.com//questions/11695123

Вопрос

Я работаю над созданием полиморфной ассоциации телефонного номера с волонтером (а позже и с другими вещами), в настоящее время я столкнулся со следующей ошибкой:

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top