我正在使用Mongoid,当我.update_attributes
使用params [:model_name]的references_one
模型时,我收到错误...
@model.update_attributes(params[:model_name])
undefined method `associations' for "...":String
我明白为什么会这样。当它想要的是对另一个Mongoid :: Document的引用时,Mongoid试图将.association_name
映射到params散列中的字符串值。我得到了。
我想知道的是,是否有一种全球性的解决方法。目前我已经通过执行以下操作解决了这个问题......
model_params = params[:model_name]
if model_params.has_key? :relationship
model_params[:relationship] = RelatedModel.first(:conditions => { :_id => model_params[:relationship] })
end
这适用于,但是我宁愿每次都修复它,以便每次进行更新时都不会手动映射相关模型。这肯定会违反DRY。
答案 0 :(得分:0)
这是您可以包含在所有模型中的示例模块
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