У меня есть модель с данными, которые никогда не должны включаться, когда они отображаются как 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)
У меня есть модель с данными, которые никогда не следует включать, когда она отображается как 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)
У меня есть модель с данными, которые никогда не следует включать, когда она отображается как 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
=>#
>
ruby-1.9.2-p136: 002> d.as_json
Собака :: as_json
=> {"dog" => {"id" => 1, "name" => "Скуби", "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" => "Мне нравится гадить везде"}}}Спасибо за помощь