Mongoidで2つのメソッドを定義したい:高価ですか?そしてその範囲。これが私がしていることです:
class MyItem
include Mongoid::Document
include Mongoid::Timestamps
# it could find expensive and cheap items depending of is_expensive parameter
scope :expensive, ->(is_expensive = true) do
if is_expensive
where(:expensive?)
else
not_in(:expensive?)
end
end
def expensive?
price >= 10 # $10
end
end
だから私は次の方法でアイテムを見つけられるようにしたいと思います:
MyItem.expensive #find all expensive ones
MyItem.where(:expensive?) #the same as above
MyItem.first.expensive? #check if it's expensive
items.expensive # items is the collection of MyItem
それらは機能しません。たとえば、MyItem.where(:expensive?)
言いますundefined method each_pair for :expensive?:Symbol
特に、インスタンスメソッド(クラスメソッドではない)として機能するメソッドまたはスコープを実行する方法を理解したい-items.expensive