class Api::StoresController < ApplicationController
respond_to :json
def index
@stores = Store.all(:include => :products)
respond_with @stores
end
end
Возвращает только магазины без их продуктов, как и
Store.find(:all).to_json(:include => :products)
Связь проверена, я вижу вложенные продукты в выводе консоли, скажем, из
Store.first.products
Как правильно их получить продукты, включенные в MongoMapper?
Вот мои модели:
class Store
include MongoMapper::Document
many :products, :foreign_key => :store_ids
end
class Product
include MongoMapper::Document
key :store_ids, Array, :typecast => 'ObjectId'
many :stores, :in => :store_ids
end
ОБНОВЛЕНИЕ
Пробуя предложение Скотта, я добавил в модель Store следующее:
def self.all_including_nested
stores = []
Store.all.each do |store|
stores << store.to_hash
end
end
def to_hash
keys = self.key_names
hash = {}
keys.each{|k| hash[k] = self[k]}
hash[:products] = self.products
hash[:services] = self.services
hash
end
И в контроллер:
def index
@stores = Store.all_including_nested
respond_with @stores
end
Который выглядит как должно работать? Предположим, что для массива хешей будет вызван #to_json, а затем то же самое произойдет с каждым хешем и каждым продуктом + сервисом. Я читаю источник ActiveSupport :: JSON, и до сих пор это то, что я почерпнул из него.
Но, еще не работает ...: (