Рельсы 4 область по умолчанию
в моем приложении Rails есть область по умолчанию, которая выглядит так:
default_scope order: 'external_updated_at DESC'
теперь я обновился до Rails 4 и, конечно же, я получаю следующее предупреждение об устаревании "вызов #scope или #default_scope с хэшем является устаревшим. Пожалуйста, используйте лямбду, содержащую область.". Я успешно преобразовал мои другие области, но я не знаю, какой синтаксис для default_scope должен быть. Это не работает:
default_scope, -> { order: 'external_updated_at' }
8 ответов:
должно быть только:
class Ticket < ActiveRecord::Base default_scope { order(:external_updated_at) } end
default_scope принимает блок, лямбда необходима для scope (), потому что есть 2 параметра, имя и блок:
class Shirt < ActiveRecord::Base scope :red, -> { where(color: 'red') } end
это работает у меня (просто для иллюстрации с Где), потому что я пришел к этой теме через те же проблемы.
default_scope { where(form: "WorkExperience") }