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