as_json не вызывает as_json для ассоциаций

У меня есть модель с данными, которые никогда не должны включаться, когда они отображаются как 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" => "Мне нравится гадить везде"}}}

Спасибо за помощь

35
задан nannerpus 30 January 2011 в 03:28
поделиться