我有一个类Store,每个商店都有一个不同产品的Hash,每个产品都有一个不同类型的Hash。
class Store
def initialize
@store_products = Hash.new
#@store_products['product_id'] = Product
end
end
class Product < Store
def initialize(model)
@model = model
@sell_option = Hash.new
#@sell_option['sell_name'] = SellOption
end
end
class SellOption < Product
def initialize(size, price, stock)
@size = size
@price = price
@stock = stock
end
end
有了这些数据:
product1 = Product.new("shirt1")
product1.add_sell_option(SellOption.new("S", 12, 10))
product1.add_sell_option(SellOption.new("M", 15, 10))
product1.add_sell_option(SellOption.new("L", 14, 10))
product2 = Product.new("shirt2")
product2.add_sell_option(SellOption.new("M", 6, 10))
product2.add_sell_option(SellOption.new("L", 7, 10))
product3 = Product.new("shirt2")
product3.add_sell_option(SellOption.new("M", 10, 10))
product3.add_sell_option(SellOption.new("L", 11, 10))
store = Store.new
store.add(product1)
store.add(product2)
store.add(product3)
在类商店中,我想要一个按价格对我的产品进行排序的方法。 如果使用这个表达式:
puts store.products_sorted_by_price
def products_sorted_by_price
@store_products.each_value do |product|
product.sort_by{|k, v| v.value.price}
end
end
为什么它会返回&#34;未定义的方法&#39; sort_by&#39;对于产品...&#34; !!
答案 0 :(得分:0)
我对你的问题有很多不了解的事情:
- 为什么Product
继承自Store
?
- 为什么SellOption
继承自Product
?
- 您是否尝试按价格对产品进行分类?
- 如果卖出期权的价格不同,您会使用哪个价格?
- 为什么不同尺码的价格不同?
- 您从value
中提取的v
是什么Product
?
无论如何...... sort_by通常在Enumerable
上运行,而Product
不是一个,据我所见。因此,确切的答案是Ruby说undefined method 'sort_by' for Product
,因为您没有在sort_by
上定义Product
,或者从定义它的类继承。
我猜你打算做更像这样的事情:
@store_products.sort_by {|k,v| v.value.price }?
即便如此,我也不知道value
是什么,在您真正完成sort_by之前,您必须弄清楚如何处理产品中的多个价格,但希望这能指出你正确的方向。
澄清你的问题,我可以尝试改进答案。