我有一個看起來像建立一個Rails範圍使用`tap`
class Student < ActiveRecord::Base
def self.search(options = {})
all.tap do |s|
s.where(first_name: options[:query]) if options[:query]
s.where(graduated: options[:graduated]) if options[:graduated]
# etc there are many more things that can be filtered on...
end
end
end
雖然時調用此方法的方法,我取回所有的結果,而不是一個過濾設置爲我所期望的。看起來我的tap
功能沒有按照我的預期工作。什麼是正確的方法來做到這一點(沒有將all
分配給一個變量,如果可能,我想在這裏使用塊)。
感謝您的真棒深入解釋! –