Множественные отношения с монгоидной оболочкой

у меня следующая проблема:

у меня есть 3 модели заказов, пользователей и приложений со следующими отношениями:

Пользователи:

has_many :apps
has_many :orders

Заказы:

belongs_to :user
has_one :app

Программы:

belongs_to :user
belongs_to :app

на основе этих моделей я хочу сделать следующие запросы с mongoid (rails mongodb-wrapper):

@order = current_user.orders.new(...)
@app = @order.build_app()

результатом должно быть создание нового приложения и заказа, где заказ имеет app_id и user_id, а новое приложение получает только user_id. на самом деле он создает новый заказ и новое приложение, но только с user_id в заказе, новое приложение остается нетронутым.

любой совет? Благодарность!


person trnc    schedule 18.04.2011    source источник


Ответы (1)


Новое приложение должно иметь идентификатор order_id, но не идентификатор пользователя, как вы его закодировали. Кроме того, если вы хотите, чтобы они сохранялись, вам нужно создавать, а не строить.

order = current_user.orders.create
current_user.apps.create(order: order)

Будут установлены только те идентификаторы, которые являются частью отношения, используемого для сборки/создания. Все остальное нужно передать.

person Paul Elliott    schedule 18.04.2011
comment
current_user.apps.create установит соответствующий идентификатор для этого отношения, так что все должно быть хорошо. - person Paul Elliott; 21.04.2011