Beschränken bestimmte Felder in der Antwort von rails-controller
Habe ich eine controller-Aktion, wie
def index
@videos = Video.all.to_a
respond_to do |format|
format.xml { render :xml => @videos }
format.json { render :json => @videos }
end
end
Video-Attribute hat name
und title
.
Möchte ich die xml zurückgeben enthalten nur title
.
Wie beschränke ich es aus der Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tut es so:
Finden Sie mehr info über diese bei die Serialisierung Dokumentation.
Können Sie eine
select
Klausel auf IhreVideo.all
Abfrage, Angabe der Felder, die Sie einschließen möchten.Außerdem sollte man nicht anrufen müssen
to_a
auf Ihre Anfrage.Definieren Sie Ihre eigenen
.to_xml
Methode innerhalbvideo.rb
,e.g:
Dann rufen Sie
respond_with(@videos)
in Sie-controller.Sehen diese ähnliche Frage.
schnell Weg wäre, um :zupfen, wenn Sie einfach wieder eine Reihe von Titeln (ich vermute Nein: - id) , dann wäre dies sehr schnell
:zupfen wird Weg sein, schneller als alle anderen Optionen, denn es gibt ein array mit genau der angeforderten Daten. Es muss nicht instanziieren eine ganze ActiveRecord-Objekt für jede Datenbankzeile. Weil seine ruby, diese Instanzen sind das, was am meisten Zeit. Sie können auch tun :
wenn Sie nicht wollen, um Ihre SQL-Bleistift aus, das ist ziemlich gut