Раньше у меня работал этот код в Rails 3.2.16:
f.grouped_collection_select :state_id, @states.ordered, 'children.ordered', :name, :id, :name
После обновления до Rails 4.0 я получаю сообщение об ошибке:
undefined method `children.ordered' for #<State:0x007f66498d90f8>
Кажется, это как-то связано с тем, что области действия разрешены только как вызываемые объекты. Моя модель выглядит так:
class State < ActiveRecord::Base
has_many :children, class_name: 'State', foreign_key: 'parent_id'
belongs_to :parent, class_name: 'State'
scope :ordered, -> {
order(:sequence)
.order(:name)
}
end
Кто-нибудь знает, как заставить это работать снова? Я не могу использовать default_scope здесь, потому что для переопределения этой области по умолчанию потребуется много места.