У меня есть следующий код:Rails "find_all_by" против ".гда"
def maturities
InfoItem.find_all_by_work_order(self.work_order).map(&:maturity)
end
Я думал об изменении его:
def maturities
InfoItem.where(work_order: self.work_order).map(&:maturity)
end
Будет ли какое-то преимущество в этом? Похоже, .where
чаще встречается, чем find_all_by
.
Я нахожусь в процессе обновления приложения из Rails 4.0.3 в 4.1.0 и мой код, который используется ' find_all_by' больше не работает ('NoMethodError'). Я ничего не вижу в примечаниях к выпуску, которые повлияют на него. Мне нужно переключиться на «где». Если бы я использовал 'where' с самого начала, мой код был бы менее подвержен таким ошибкам. Есть [комментарий ниже] (http://stackoverflow.com/questions/11232971/rails-find-all-by-vs-where#comment14759921_11233522), в котором упоминается, что 'find_all_by_ *' будет устаревшим в Rails 4. Тем не менее, это произошло как сюрприз для меня. Где документируется удаление этого метода? – Dennis
Я нашел, где это задокументировано. В примечаниях к версии 4.1: «Убрана функция activerecord-deprecated_finders как зависимость. Для получения дополнительной информации см. Драгоценный камень README». – Dennis
Я бы также предложил использовать 'pluck' вместо' map' в этом типе ситуации. 'InfoItem.where (work_order: self.work_order) .pluck (: maturity)' – jurassic