Rails 4 + Mongoid 4: Model.only("поле"). To_a не работает, как раньше
Я только начал новый проект в Rails 4 и бета-версии Mongoid 4, и старое поведение, которое я часто использовал в Mongoid 3, больше не работает.
Раньше я писал Model.only("field").to_a
и я бы получил массив с id
а также field
все остальные поля были установлены на ноль.
Если я попытаюсь сделать это в Mongoid 4, я получу: (Object doesn't support #inspect)
Model.only("field").map {|e| e.field}
работает, хотя не так, как раньше. id
не входит больше, я получаю ActiveModel::MissingAttributeError
если я попытаюсь получить доступ к идентификатору.
Я знаю, что могу использовать Model.pluck("field")
это не вернет массив документов.
Эти изменения реальны или я что-то упустил?
РЕДАКТИРОВАТЬ: Как я пишу это, я пытался в том числе id
и это работает. то есть. Model.only("id", "field").to_a
работает как и раньше, но мой вопрос остается в силе. Нужно ли включать id
Теперь для того, чтобы получить массив documents
?
1 ответ
Это новое поведение в Mongoid 4. Как вы сказали, вы можете добавить поле "id" к единственному методу, и оно должно работать. Вы также можете использовать метод pluck, чтобы получить и массив полей, которые вы хотите. Что-то вроде:
Model.all.pluck ("id", "field"). Как вы сказали, вы уже знали о срыве, и это путь...
веселит.