Автоматическое сопоставление ассоциаций в Mongoid с использованием параметров - PullRequest
1 голос
/ 14 ноября 2010

Я использую Mongoid, и когда я .update_attributes на модели с references_one с использованием параметров [: имя_модели], я получаю сообщение об ошибке ...

@model.update_attributes(params[:model_name])
    undefined method `associations' for "...":String

Я понимаю, почему это такпроисходит.Mongoid пытается отобразить это .association_name на строковое значение в хэше params, когда он хочет получить ссылку на другой Mongoid :: Document.Что я получаю.

Я хотел бы знать, есть ли глобальный способ исправить это. На данный момент я справился с этой проблемой, выполнив что-то вроде следующего...

model_params = params[:model_name]
if model_params.has_key? :relationship
    model_params[:relationship] = RelatedModel.first(:conditions => { :_id => model_params[:relationship] })
end

Это работает , но Я бы предпочел иметь исправление, которое исправляет его каждый раз, чтобы я не отображал вручную связанную модель каждый раз, когда делаю обновление,Это было бы демонстративно нарушением СУХОГО.

1 Ответ

0 голосов
/ 14 ноября 2010

Вот пример модуля, который вы можете включить во все ваши модели

module MyAppBase  
def my_update_attributes(model_params,related_model)
    if model_params.has_key? :relationship
        model_params[:relationship] = related_model.first(:conditions => { :_id => model_params[:relationship] })
    end
    self.update_attributes(model_params)
  end
end 

#include it in your model classes
class MyModel < ActiveRecord::Base
    include MyAppBase
    #normal model code
end
...