新手问题 mongoid update 返回 true,但没有更新成功

itsvoid · 2012年11月13日 · 最后由 chenge 回复于 2012年11月13日 · 2543 次阅读

我有一个model,名为CustomSearchEngine 命令行下: irb(main):044:0> cse=CustomSearchEngine.last 返回实例,这没问题:

=> #<CustomSearchEngine _id: 50a1fc222061c78416000001, _type: nil, created_at: 2
012-11-13 07:52:59 UTC, updated_at: 2012-11-13 07:57:14 UTC, parent_id: nil, sta
tus: "draft", author_id: "50a047742061c77019000076", consumer_ids: [], node_id:
"508a3fee2061c76825000001">

注意status:"draft" 然后,我执行 cse.update(status:"publish")后,返回:

irb(main):045:0> cse.update(status:"publish")
=> true
irb(main):046:0> cse
=> #<CustomSearchEngine _id: 50a1fc222061c78416000001, _type: nil, created_at: 2
012-11-13 07:52:59 UTC, updated_at: 2012-11-13 07:57:14 UTC, parent_id: nil, sta
tus: "draft", author_id: "50a047742061c77019000076", consumer_ids: [], node_id:
"508a3fee2061c76825000001">

update结果执行为true,但是status还是draft,这是何故?

共收到 9 条回复

mongoid对ruby版本有要求么?

#1楼 @chenge 我的版本是: ruby 1.9.3p125 (2012-02-16) [i386-mingw32] MongoDB shell version: 2.0.7

我现在这样做是可以更新的,不过比较怪异:

cse.status = 'publish'
cse.save

可查看api吧,用别人的东西,只好照别人的规矩。

不是update_attribute么

#4楼 @stone update_attributes我也用过,刚才我试了若干遍不行,重启了rails c后又可以了。不知什么原因。

update_attributes or update_attribute

#6楼 @Rei update也不报错,这是什么用法?

我测试update是可以的。好像不能带参数。

Person.where(first_name:'h232').update(last_name:'123x') 是可以的,好像要下一次访问才生效。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册