2013-08-07 13 views
6

Ho iniziato con ActiveResource, ma ho colpito rapidamente il muro. Impossibile attivare ActiveResource quando si esegue l'override di to_json e to_xml sul modello sottostante. Inoltre, non è possibile rendere la rappresentazione delle risorse inserire collegamenti nel documento XML generato. Oh btw, sto usando Rails 3.2.1.Come implementare HATEOAS in Rails

Ho fatto un po 'di ricerche e ho scoperto la sua gemma. Provato, per qualche motivo non ha funzionato per me. Quindi la mia domanda è:

Se ho una risorsa (ad esempio libri) ospitata in un sito Web (qualcosa come http://books.org) e un'altra risorsa (ad esempio studenti, http://students.org), ospitata in un altro sito Web, come posso ottenere i libri rappresentare se stessi per uno studente nella loro piena gloria HATEOS?

Sono stato in grado di ottenere la risorsa del libro per rappresentarsi allo studente che chiede come documento XML. L'ho fatto usando vanilla Rails ActiveResource nel sito degli studenti. Ho creato una risorsa Libri che eredita da ActiveResource::Base. Quindi ho specificato self.site e self.element_name, dopo di che sono stato in grado di eseguire alcune query rudimentali di tipo ActiveRecord sul sito di libri remoti. L'unica cosa che ha funzionato per me è stata Book.all e Book.find(1). Anche quello non era soddisfacente perché la rappresentazione conteneva tutte le colonne del database e volevo almeno rimuoverne alcune, che risultarono non essere possibili.

Ora che ho abbandonato questo approccio, mi chiedo se ci sia un esempio funzionante in Rails dove è possibile costruire una rappresentazione più sofisticata di una risorsa (es. Libri) che conterrà collegamenti che guideranno l'applicazione trasferimento di stato? Trovo semplicemente incredibile che un requisito così semplice sembra così diabolicamente difficile da implementare in Rails. Tutto quello che sto cercando di fare è creare una rappresentazione di una risorsa che includa alcuni collegamenti che guideranno il consumatore alla scoperta di ciò di cui è capace questa risorsa. Sono principalmente interessato all'implementazione del flusso di lavoro, che è un tipo di processo conversazionale stratificato e peeling-the-onion.

risposta

1

In Rails, è necessario modificare il modo in cui avviene la serializzazione del proprio oggetto se si desidera eseguire questa operazione in JSON. (È necessario scavalcare il modo in cui Rails restituisce rappresentazioni di risorse.) La gemma più comune per farlo sarebbe: https://github.com/rails-api/active_model_serializers

Se non si desidera utilizzare AMS o si desidera restituire HTML, considerare di seguire questo modello di presentatore : http://blog.steveklabnik.com/posts/2012-01-06-implementing-hateoas-with-presenters

Problemi correlati