轨道上的红宝石 3 - Mongoid update_attributes没有持久化



这是一个简单的模型。

class Event
  include Mongoid::Document
  field :name, type: String
  field :schedule, type: String
  field :description, type: String
  field :active, type: Boolean, default: true
  key :name
end

1.我们创造和活动

ruby-1.9.2-p0 > event = Event.new(:name => "event1")
 => #<Event _id: event1, _type: nil, _id: "event1", name: "event1", schedule: nil, description: nil, active: true> 
ruby-1.9.2-p0 > event.save!
 => true

2.知道让我们找到事件

ruby-1.9.2-p0 > event = Event.find("event1")
=> #<Event _id: event1, _type: nil, _id: "event1", name: "event1", schedule: nil, description: nil, active: true> 

3.So 更新事件属性

ruby-1.9.2-p0 > event.update_attributes!(:name => "new name")
 => true 

4.让我们尝试查找事件

ruby-1.9.2-p0 > event = Event.find("new name")
Mongoid::Errors::DocumentNotFound: Document not found for class Event with id(s) new name.

5.哎呀找不到,但旧的仍然存在

ruby-1.9.2-p0 > event = Event.find("event1")
 => #<Event _id: event1, _type: nil, _id: "event1", name: "event1", schedule: nil, description: nil, active: true>


我做错了什么?我希望这不是一个错误。

我不相信MongoDB可以让你改变_id字段。当我使用标准 mongo shell 尝试它时,我收到此错误(这意味着这不是 Mongoid 限制,而是实际 Mongo 软件中的限制):

Mod on _id not allowed

每当需要更改name字段时,都可能需要:

  1. 将其复制到具有新名称的新记录。
  2. 删除旧记录

相关内容

  • 没有找到相关文章

最新更新