Я уже знаю, как включить отношения has_many & has_one в мой рендеринг JSON. Я даже знаю, как исключить определенные атрибуты при этом. Для тех, кто не знает, вот хороший пост:
Объектные отношения Rails и рендеринг JSON
Однако, что я не знаю, как это сделать, это использовать as_json для дочернего объекта, поэтому мне не нужно повторно объявлять его при каждом родительском отношении.
Так что, если у меня есть что-то вроде этого ...
class Customer < ActiveRecord::Base
has_many :orders
def as_json(options={ })
super({ :except => :Password, :include => [:orders] }.merge(options))
end
end
class Order < ActiveRecord::Base
has_one :customer
def as_json(options={ })
super({ :include => [:customer] }.merge(options))
end
end
В конечном итоге отправляется пароль клиента при просмотре его с точки зрения заказа.
В идеале я бы хотел, чтобы он следовал правилам as_json, определенным в модели, поэтому мне не нужно вставлять исключения для включения: customer в каждый дочерний объект.
P.S. - Это всего лишь пример, а не сценарий реального мира.