У меня есть модель с данными, которые никогда не должны включаться, когда она отображается как json. Поэтому я применил метод класса as_json для надлежащего поведения. Проблема в том, что другие модели с ассоциациями с этой моделью отображают json, мой пользовательский as_json не вызывается.
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
Загрузка среды разработки (Rails 3.0.3)
ruby-1.9.2-p136: 001 > d = Dog.first
= >#<Dog id: 1, owner_id: 1, name: "Scooby", secret: "I enjoy crapping everwhere"
>
ruby-1.9.2-p136: 002 > d.as_json
Собака:: as_json
= > { "dog" = > { "id" = > 1, "name" = > "Scooby", "owner_id" = > 1}}
ruby-1.9.2-p136: 004 > d.owner.as_json (: include = > : dog)
Владелец:: as_json
= > { "owner" = > { "id" = > 1, "name" = > "Shaggy",: dog = > { "id" = > 1, "name" = > "Scooby", "owner_id" = > 1, "secret" = > "Мне нравится обниматься везде" }}}
Спасибо за помощь