У меня есть следующий класс:Mongoid не отменяет существующие документы через .create
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?
'find' принимает идентификатор в качестве параметра, вы, вероятно, имеете в виду' find_by (name: 'Yolo') '. – toro2k
Я знаю. «Yolo» - это идентификатор, а также имя. –