我想执行以下操作:
情况1:
x = Group.all[0].people
x.class
=> Array
x.order
美好的。:)
案例2:
y = Person.all
y.class
=> Array
y.order
=> NoMethodError: undefined method `order' for #<Array:0x718c278>
:(
x 和 y 都包含相同类型的项目 - 一堆 Person 模型。为什么ruby不能订购数组?
提前致谢
我想执行以下操作:
情况1:
x = Group.all[0].people
x.class
=> Array
x.order
美好的。:)
案例2:
y = Person.all
y.class
=> Array
y.order
=> NoMethodError: undefined method `order' for #<Array:0x718c278>
:(
x 和 y 都包含相同类型的项目 - 一堆 Person 模型。为什么ruby不能订购数组?
提前致谢
好的,所以 Group.all.first.person 不返回数组。看起来确实如此,但实际上它是 ActiveRecord AREL 的一部分,它允许您将关系和范围链接在一起。
当您调用#order时,Group.all.first.person您实际上是在调用“订单”范围,告诉查询对任何人都没有订单。
如果你打电话,你会得到同样的错误
Group.all.first.person.all.order
NoMethodError: undefined method `order' for #<Array:0x007fe7dd03ff08>
重要的是“#all”。
在 ruby 中,没有“order”方法。有一个 sort 和 sort_by