class User < ActiveResource::Base
self.element_name = "user"
end
A continuación, se le va a preguntar cómo llegar uno de los elementos de la dirección URL que se parece a ActiveResource ser //foo.com/user.json en lugar de //foo.com/user/.json
User.find(:one, :from => "https://foo.com/user.json?username=#{<USERNAME>}"
Editar en respuesta al comentario
¿hay una manera de hacer esto sin tener que introducir la dirección URL completa de la solicitud cada vez que quiero usar find()?
Una forma es definir un método en la clase para hacer la URL completa para usted.
class User < ActiveResource::Base
self.element_name = "user"
def self.find_by_username(username)
find(:one, :from => "https://foo.com/user.json?username=#{username}"
end
def find
self.class.find(:one, :from => "https://foo.com/user.json?username=#{username}"
end
end
Otra forma es redefinir element_path.
class User < ActiveResource::Base
self.element_name = "user"
def self.element_path(id, prefix_options = {}, options = {})
"https://foo.com/user.json?username=#{prefix_options["user_id"]}"
end
end
Algunos llamarían a este mono-parches, otros lo llamarían Programación Orientada a Objetos. Digo que es solo un parche para los monos cuando ingresas al código o usas la naturaleza dinámica de Ruby para cambiar el comportamiento básico y esta es una forma totalmente legítima de hacer las cosas en Programación Orientada a Objetos. Sin embargo, la comunidad de Ruby no usa demasiado OOP, prácticamente ignorando la herencia a favor de mezclas mucho más flexibles (y menos buenas), y solo usando pato-tipado para polimorfismo.
La cuestión de tener que meterse con ActiveResource para construir una URL donde no se puede redefinir el servicio web para aceptar las convenciones de ActiveResource es la razón por la que muchos están usando HTTParty en su lugar. "Si usted tiene que construir la URL, puede ser que también utilice HTTParty"
¿Hay alguna manera hacer esto sin tener que ingresar la URL completa de la solicitud cada vez que quiera usar find()? –
Lo pediste. Respuesta editada. –
Puede usar 'site' y' prefix' para componer la primera parte de la URL también. – funwhilelost