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"). Как вы сказали, вы уже знали о срыве, и это путь...

веселит.

Другие вопросы по тегам