2016-03-18 4 views
0

私はクラスストアを持っていますが、各ストアには異なる製品のハッシュがあり、各製品にはさまざまな種類の販売があります。私は価格で、私の製品を並べ替える方法をしたいクラスストアにRuby sort_by of Objects/Classes未定義のメソッド 'sort_by'の場合

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) 

:このデータでは

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 

。 使用している場合、この式:

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 

それが返すのはなぜ "製品のために未定義のメソッド 'sort_by' に..." !!

答えて

0

あなたの質問について私が理解していないことがたくさんあります: - なぜProductStoreから継承されていますか? - SellOptionProductを継承するのはなぜですか? - 価格で製品を並べ替えようとしていますか? - 売りオプションの価格が異なる場合、どの価格を使用しますか? - サイズによってサイズが異なるのはなぜですか? - Productとなっているvから抽出するvalueは何ですか?

とにかく... sort_byは、通常、Enumerableで実行され、Productは、私が見る限り、1つではありません。したがって、正確な答えは、undefined method 'sort_by' for Productsort_byProductに定義していないか、または定義しているクラスから継承しているためです。

私はあなたがより多くのこのような何かを意味推測しています:

その後も除き
@store_products.sort_by {|k,v| v.value.price }? 

、私はvalueが何であるかを知らない、とあなたが対処する方法を把握する必要がありますあなたが本当にsort_byを終了する前に、製品の複数の価格が、うまくいけば、これは正しい方向にあなたを指しています。

質問を明確にすると、回答を改善することができます。

+0

継承;私にはもっと必要な方法があるからです。 異なる価格から、私は最小価格を選択する方法があります。 私のエラーは、私が製品に注文を適用するのではなく、そのうちの1つにしか適用しないということでした。 – Rat

関連する問題