J'essaie de surcharger as_json dans l'un de mes modèles, en partie pour inclure des données d'un autre modèle, en partie pour éliminer certains champs inutiles. D'après ce que je l'ai lu est l'approche privilégiée dans Rails 3. Pour simplifier, disons que j'ai quelque chose comme:Le remplacement de as_json n'a aucun effet?
class Country < ActiveRecord::Base
def as_json(options={})
super(
:only => [:id,:name]
)
end
end
et dans mon contrôleur simplement
def show
respond_to do |format|
format.json { render :json => @country }
end
end
Pourtant, quel que soit j'essaie, la sortie contient toujours les données complètes, les champs ne sont pas filtrés par la clause ": only". Au fond, mon remplacement ne semble pas botter, mais si je change à, disons ...
class Country < ActiveRecord::Base
def as_json(options={})
{foo: "bar"}
end
end
... Je ne reçois en effet la sortie JSON attendue. Ai-je simplement eu la syntaxe fausse?
BTW - J'ai loin après avoir lu http://jonathanjulian.com/2010/04/rails-to_json-or-as_json/ –
Voir aussi http://stackoverflow.com/questions/2556468/override-as-json-or-to-json-model-class-name –
Et https://rails.lighthouseapp.com/projects/8994/tickets/ 3087 –