Я хотел бы создать сложные экземпляры объекта отдыха с помощью одного вызова rest с использованием rails.В приведенном ниже примере я получаю сообщение об ошибке в контроллере при вызове new для Person с хешем параметра.
Я получаю сообщение об ошибке неожиданного типа при просмотре ActiveSupport :: HashWithIndifferentAccess, а не PhoneNumber
Хэш, переданный из теста, содержит массив объектов Hash, а параметры действия контроллера создают объекты ActiveSupport :: HashWithIndifferentAccess.
- Есть предложения по исправлению ошибки?
- Существует ли более простой способ создания сложных объектов activerecord с помощью одного вызова rest.
т.е. модели:
class Person < ActiveRecord::Base
has_many :phone_numbers , :autosave => true
class PhoneNumber < ActiveRecord::Base
belongs_to :person
person_controller_test.rb
test "should create person" do
newperson=Person.new(:name => "test")
newperson.phone_numbers << PhoneNumber.new(:number => "123-4567")
person_string= newperson.to_xml(:include => :phone_numbers)
person_hash=Hash.from_xml(course_string)
person_hash2=person_hash['person']
post :create, :person => person_hash2, :format => "xml"
assert_response :success
end
person_controller.rb
def create
@person = Person.new(params[:person])