class User < ActiveResource::Base
self.element_name = "user"
end
Avanti, che si sta per chiedere come ottenere un elemento da un URL che guarda a ActiveResource essere //foo.com/user.json invece di //foo.com/user/.json
User.find(:one, :from => "https://foo.com/user.json?username=#{<USERNAME>}"
Modifica in risposta al commento
c'è un modo per farlo senza dover inserire l'URL completo della richiesta ogni volta che voglio usare find()?
Un modo è definire un metodo nella classe per eseguire l'URL completo.
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
Un altro modo è ridefinire elemento_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
Alcuni chiamerebbero questa patch di scimmia, altri la chiamerebbero Programmazione orientata agli oggetti. Dico che è solo patch-scimmia quando entrate nel codice o usate la natura dinamica di Ruby per cambiare il comportamento di base e questo è un modo totalmente legittimo di fare cose nella programmazione orientata agli oggetti. Tuttavia, la comunità di Ruby non usa molto OOP, ignorando praticamente l'ereditarietà in favore di mix-in molto meno tolleranti (e meno ben educati), e usando solo la tipizzazione anatra per il polimorfismo.
I problemi relativi alla necessità di creare conflitti con ActiveResource per creare un URL in cui non è possibile ridefinire il servizio Web per accettare le convenzioni di ActiveResource è perché molti utilizzano invece HTTParty. "Se si deve costruire l'URL, potrebbe anche usare HTTParty"
fonte
2012-09-26 18:25:01
C'è un modo per fare questo senza dover inserire l'URL completo della richiesta ogni volta che voglio usare find()? –
Hai chiesto per questo. Risposta modificata. –
Potresti usare 'site' e' prefix' per comporre anche la prima parte dell'URL. – funwhilelost