我有以下课程:
class Magazine
include Mongoid::Document
field :name
field :count
field :_id, default: -> { name }
我通过Magazine.create!(name: "Yolo", count: 2)
. 这工作正常。现在,当我想在 MongoDB 中更新此文档时,由于计数已更改,我认为这会起作用:
Magazine.create!(name: "Yolo", count: 42)
该名称映射到相同的标识符,因此文档被覆盖。虽然看起来操作成功了,但在 MongoDB 中,文档没有更新。
相反,我必须这样做:
Magazine.where(name: "Yolo").first.update_attributes!(count: 42)
哪个有效,但有人可以解释为什么我的第一种方法不起作用,如果我的第二种方法是通过 Mongoid 更新文档的常用方法?