Api - pokazywanie niektórych elementów modelu

Cześć,

Pracuje nad API. Mam model Client, który ma 5 pól: name, surname, mail, street, token.

Gdy użytkownik zapyta się o domena.pl/clients.xml
chce mu zwrócić w xmlu wszystkich jego klientów.

@clients = Client.all respond_to do |format| format.xml {render :xml => @clients} end
Powyższy kod bardzo ładnie zwraca xml wraz z wszystkimi polami.
Jak ładnie go zmodyfikować aby nie zwracał wszystkich tylko część (bez pola token)?

no zrob sobie widok do tego

@clients = Client.all respond_to do |format| format.xml end
i wtedy masz index.xml.builder
plik do zbudowania xml

a w nim np

xml.instruct! xml.clients do @clients.each do |post| xml.post do xml.title post.title xml.body post.body xml.published_at post.published_at xml.comments do post.comments.each do |comment| xml.comment do xml.body comment.body end end end end end end

Być może tak zadziała:

@clients = Client.all(:select => 'name, surname, mail, street')
respond_to do |format|
  format.xml {render :xml => @clients}
end

Warto zawsze spojrzeć w dokumentację: http://api.rubyonrails.org/classes/ActiveRecord/Serialization.html#M001876

to_xml i to_json mają kilka przydatnych opcji, na przykład except :slight_smile:

Tak, też o tym myślałem ale przy większej liczbie parametrów to nie bardzo dobre rozwiązanie

[quote=drogus]Warto zawsze spojrzeć w dokumentację: http://api.rubyonrails.org/classes/Acti … ml#M001876

to_xml i to_json mają kilka przydatnych opcji, na przykład except[/quote]
Dzięki drogus, tego właśnie szukałem.