Предположим, у нас есть что-то вроде:
class Company
include Mongoid::Document
has_many :users
field :name, type: String
end
class User
include Mongoid::Document
belongs_to :company
field :name, type: String
end
module CompanyRepresenter
include Roar::Representer::JSON
property :name
end
module UserRepresenter
include Roar::Representer::JSON
property :name
link :self do
user_url
end
end
Затем мы продолжаем делать что-то вроде этого:
user.extend(UserRepresenter).to_json
И все просто замечательно. Но как насчет:
User.all.to_json
или
company.extend(CompanyRepresenter).users.to_json?
или даже:
company.users.collect{|u| u.extend(UserRepresenter)}.extend(Representable::JSON::Collection).to_json
Результатом всегда является массив нормальных to_json
записей Mongoid.
Вопрос в том, как получить что-то вроде Company.all.to_json
, чтобы иметь Roared JSON, включая ссылки и другие дополнительные данные сериализации.