根據Rails的documentation for scope
,一個範圍,如:爲什麼這個範圍類查詢方法使用拒絕?
class Shirt < ActiveRecord::Base
scope :red, -> { where(color: 'red') }
end
是真正:
class Shirt < ActiveRecord::Base
def self.red
where(color: 'red')
end
end
他們也說關係應作爲一個Array
,所以做這樣的事情
Shirt.red.each(&block)
應該工作......並且它確實如此。
使用我們上面所知的一切,爲什麼以下不起作用?
class Shirt < ActiveRecord::Base
def self.short_sleeved
reject{|object| object.short_sleeved == false}
end
end
Shirt.red.short_sleeved
結果undefined method 'reject' for #<Class:0xba552d4>
我不知道你正在嘗試做? 'class Shirt {where(short_sleeve:true)} end'''將會做到 –
MZaragoza
根據APIDock,我的語法是假設工作...但是我發現一個線程在軌道git存儲庫已給出相同的錯誤。解決的辦法是把所有的東西都放在枚舉器上... all.reject {} https://github.com/rails/rails/issues/21943 –