¿Qué me falta? Estoy tratando de utilizar un servicio de descanso para con el recurso de Active, tengo el siguiente:Tener 'asignador indefinido para datos' al guardar con ActiveResource
class User < ActiveResource::Base
self.site = "http://localhost:3000/"
self.element_name = "users"
self.format = :json
end
user = User.new(
:name => "Test",
:email => "[email protected]")
p user
if user.save
puts "success: #{user.uuid}"
else
puts "error: #{user.errors.full_messages.to_sentence}"
end
Y la siguiente salida para el usuario:
#<User:0x1011a2d20 @prefix_options={}, @attributes={"name"=>"Test", "email"=>"[email protected]"}>
y este error:
/Library/Ruby/Gems/1.8/gems/activeresource-3.0.10/lib/active_resource/base.rb:1233:in `new': allocator undefined for Data (TypeError)
from /Library/Ruby/Gems/1.8/gems/activeresource-3.0.10/lib/active_resource/base.rb:1233:in `load'
from /Library/Ruby/Gems/1.8/gems/activeresource-3.0.10/lib/active_resource/base.rb:1219:in `each'
from /Library/Ruby/Gems/1.8/gems/activeresource-3.0.10/lib/active_resource/base.rb:1219:in `load'
from /Library/Ruby/Gems/1.8/gems/activeresource-3.0.10/lib/active_resource/base.rb:1322:in `load_attributes_from_response'
from /Library/Ruby/Gems/1.8/gems/activeresource-3.0.10/lib/active_resource/base.rb:1316:in `create_without_notifications'
from /Library/Ruby/Gems/1.8/gems/activeresource-3.0.10/lib/active_resource/base.rb:1314:in `tap'
from /Library/Ruby/Gems/1.8/gems/activeresource-3.0.10/lib/active_resource/base.rb:1314:in `create_without_notifications'
from /Library/Ruby/Gems/1.8/gems/activeresource-3.0.10/lib/active_resource/observing.rb:11:in `create'
from /Library/Ruby/Gems/1.8/gems/activeresource-3.0.10/lib/active_resource/base.rb:1117:in `save_without_validation'
from /Library/Ruby/Gems/1.8/gems/activeresource-3.0.10/lib/active_resource/validations.rb:87:in `save_without_notifications'
from /Library/Ruby/Gems/1.8/gems/activeresource-3.0.10/lib/active_resource/observing.rb:11:in `save'
from import_rest.rb:22
Si usuario curl para mi servicio de descanso sería como:
curl -v -X POST -H 'Content-Type: application/json' -d '{"name":"test curl", "email":"[email protected]"}' http://localhost:3000/users
con la respuesta:
{"email":"[email protected].com","name":"test curl","admin":false,"uuid":"afb8c98b-562a-4603-bbe4-f8f0816cef0d","creation_limit":5}
He agregado el seguimiento completo de la pila. Me parece extraño que los parámetros se pasen a través de @attributes, ¿no debería ser algo como @data ?? – aletapool
Es solo una estética al nombrar: 'data' es un nombre bastante sin sentido (es universalmente aplicable), donde con' attributes' al menos se obtiene la sugerencia de que es una colección de valores con clave. – phs