我的Contract
模型使用merge
并且返回一个数组,而不是我想要的ActiveRecord::Relation
。为什么我的ActiveRecord作用域使用`merge`返回一个数组?
是的,我已经看到它说"It is an ActiveRecord::Relation, but Rails is intentionally lying to you"。但是,在这种情况下:
- 范围使用
merge
- 它只有当它的链
- 最后一个范围,它返回的对象说,这是类作品
Array
- 它返回的对象无关约
ActiveRecord
其祖先 - 调用
ActiveRecord::Relation
方法如scoped
上的返回值提高了NoMethodError: undefined method 'scoped' for []:Array
。
范围是Contract
看起来类似
scope :hourly, scoped.merge(Division.find_by_name!('Hourly').contracts)
这是为什么返回一个数组?我可以得到它返回ActiveRecord::Relation
?
这是我的经验,在一个范围内合并总是返回了。与调用'scoped.to_a'一样。你能否用另一个范围调用'scoped.hourly.contracts'来创建一个新的范围作为'lambda'? – CharlesJHardy
如果你做'scope:hourly, - > {merge(Division.find_by_name!('Hourly')。contracts)}',会发生什么?那样有用吗? –
@AndrewMarshall - 不,我仍然拿回一个数组。 –