我的Contract模型上有一个范围,它使用merge并返回一个数组,而不是一个ActiveRecord::Relation我想要的。
是的,我看到它说“它是一个 ActiveRecord::Relation,但 Rails 故意对你撒谎”。但在这种情况下:
- 范围使用
merge - 仅当它是链中的最后一个范围时才有效
- 它返回的对象说它是类的
Array - 它返回的对象与
ActiveRecord它返回的对象与它的祖先 - 在返回值上调用
ActiveRecord::Relation诸如scopedraises 之类的方法NoMethodError: undefined method 'scoped' for []:Array。
范围已打开Contract,看起来像
scope :hourly, scoped.merge(Division.find_by_name!('Hourly').contracts)
为什么这会返回一个数组?我可以让它返回一个ActiveRecord::Relation吗?