#ruby-on-rails #mongodb #mongoid
#ruby-on-rails #mongodb #mongoid
Вопрос:
Мне нужно поле uuid. Я знаю, что Mongo имеет встроенную поддержку UUID и функцию UUID. Что я хочу что-то вроде этого
field :uuid, type: String, default: 'UUID()'
Конечно, в этом случае это будет просто строка ‘UUID ()’.
Есть ли способ действительно выполнить эту функцию при создании записи? В ActiveRecord есть аналогичная функциональность.
Ответ №1:
Попробуйте before_save:
class MyModel
include Mongoid::Document
before_save :generate_uuid
field :uuid, type: String
def generate_uuid
code_to_generate_uuid
end
end
BSON ::ObjectId в значительной степени является UUID, хотя это может быть излишним
Комментарии:
1. Здесь uuid сгенерирован на уровне ruby, вопрос был на уровне native (mongodb)
2. Похоже, что Mongoid не поддерживает это из коробки. Существует
mongoid-uuid
драгоценный камень, который вы могли бы установить, чтобы предоставить вам.uuid
метод, который вы могли бы вызвать в методе before_save .3. Если вопрос касается генерации uuid на сервере MongoDB, вы должны написать это. Прямо сейчас ответ отвечает на вопрос по мере написания вопроса.