У меня модель выглядит следующим образом:
class User
include Mongoid::Document
field :name
end
После сохранения нескольких пользовательских объектов в базе данных я добавил еще несколько полей:
class User
include Mongoid::Document
include Mongoid::Timestamps::Created
field :name
field :birthdate
end
Теперь я ожидаю, что смогу использовать следующий фрагмент:
@user = User.all
@user.each do |u|
puts u.name
puts u.birthdate.strftime(#someFormat)
puts u.created_at.strftime(#someFormat)
end
К сожалению, поскольку мои старые user
объекты не имеют birthdate
ключей, я получаю эту ошибку: strftime called on nil class
.
Вопрос:
- Как я могу обрабатывать такие случаи с Mongoid? В MySQL при добавлении столбца он добавляется и к старым строкам. Но если я вижу в MongoDB, он не добавляет новые поля в качестве ключей для старых данных.
- Эта проблема также существует с полем
created_at
, поскольку старые данные также не имеют этого поля.
Я ищу хороший способ решить эту проблему, проверяя условия nil
каждый раз, и это не масштабируемая опция, поскольку количество полей будет продолжать увеличиваться.