mongodb和rails id问题

时间:2012-04-29 19:03:45

标签: ruby-on-rails-3 mongodb mongomapper spine.js

我正在使用名为spine的js框架。 该框架可以通过REST api(如骨干)完成所有crud操作。 当我得到一个创建请求到我的控制器时,我得到一个模型数据,从客户端有一个id字段,我知道我在创建请求所以我应该创建一个新记录,但是mongo认为这个记录已经存在(因为id字段)并调用update而不是insert。 有没有办法解决这个问题?我希望客户端创建这个临时id,但是当调用服务器端创建时,应该忽略这个id。

一些代码:

#in my_controller
def create
  @model= Model.new(params[:modelData]) #model data is name=>"x", _id=>"c-0"
  @model.save

当save被称为mongo do update时,所以next create将覆盖此记录。

2 个答案:

答案 0 :(得分:0)

我不太确定我理解你的问题,但我认为你想要这个:

@model = Model.find_or_initialize_by_id(params[:modelData][:_id])
@model.update_attributes(params[:modelData])

答案 1 :(得分:0)

我别无选择,只能从我从客户端获取的模型中删除id字段。