Ruby 与Roar的关联和收藏
假设我们有类似于:Ruby 与Roar的关联和收藏,ruby,rest,mongoid,Ruby,Rest,Mongoid,假设我们有类似于: 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
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.users.collect{|u| u.extend(UserRepresenter)}.extend(Representable::JSON::Collection).to_json
结果总是Mongoid的正常到_json
条目的数组
问题是我如何获得类似于Company.all.tojson的东西,以获得包含链接和其他额外序列化数据的Roared json。事实证明,使用(Roar使用的)实现这一点很简单:
问题是,我如何让Company.all.to_json这样的东西通过链接和所有内容获得json。
company.users.collect{|u| u.extend(UserRepresenter)}.extend(Representable::JSON::Collection).to_json
require 'roar/representer/json'
module PostRepresenter
include Roar::Representer::JSON
property :id
property :title
end
require 'representable/json/collection'
module PostsRepresenter
include Representable::JSON::Collection
items extend: PostRepresenter
end
Post.limit(10).extend(PostsRepresenter)