J'ai un modèle avec des données qui ne doivent jamais être inclus lorsqu'il est rendu sous forme de json. J'ai donc implémenté la classe' as_json méthode pour se comporter de manière appropriée. Le problème, c'est quand d'autres modèles avec des associations avec ce modèle de rendu json, ma coutume as_json n'est pas appelée.
class Owner < ActiveRecord::Base
has_one :dog
def as_json(options={})
puts "Owner::as_json"
super(options)
end
end
class Dog < ActiveRecord::Base
belongs_to :owner
def as_json(options={})
puts "Dog::as_json"
options[:except] = :secret
super(options)
end
end
Le chargement de l'environnement de développement (Rails 3.0.3)
ruby 1.9.2-p136 :001 > d = Chien.première
=>#<Dog id: 1, owner_id: 1, name: "Scooby", secret: "I enjoy crapping everwhere"
>
ruby 1.9.2-p136 :002 > d.as_json
Chien::as_json
=> {"chien"=>{"id"=>1, "nom"=>"Scooby", "owner_id"=>1}}
ruby 1.9.2-p136 :004 > d.propriétaire.as_json(:include => :chien)
Propriétaire::as_json
=> {"propriétaire"=>{"id"=>1, "nom"=>"Shaggy", :chien=>{"id"=>1, "nom"=>"Scooby", "owner_id"=>1, "secret"=>"j'aime chier partout"}}}
Merci pour l'aide