Ассоциации и коллекции с Roar

Предположим, у нас есть что-то вроде:

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_jsonMongoid.

Вопрос в том, как мне получить что-то вроде Company.all.to_json, чтобы иметь Roared JSON, включая ссылки и другие дополнительные данные сериализации.

6
задан Kimmo Lehto 21 February 2018 в 09:30
поделиться