我的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 - 不,我仍然拿回一個數組。 –