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, и до сих пор это то, что я понял.
Но, пока не работает ...: (