【发布时间】:2014-02-26 16:16:31
【问题描述】:
我曾经在 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,因为它需要很多地方来覆盖这个默认范围。
【问题讨论】:
-
你找到解决方案了吗?我有同样的问题。
-
不,我已经创建了一个按顺序返回子级的函数,因此该函数结合了两个作用域。
标签: ruby-on-rails scope formbuilder