2016-03-18 15 views
0

Bir Sınıf Mağazam var, her Mağazanın farklı Ürünlere sahip bir Hash'i var ve her Ürünün farklı türde satışları olan bir Hash var. Bu verilerle Yakut sort_by Nesneler/Sınıflar undefined yöntemi 'sort_by' için

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) 

sınıf Store'da ben fiyata göre benim Ürünleri sıralamak bir yöntem yapmak istiyorum. kullanım Eğer bu ifade:

döndüğü Neden
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 

"Ürün için tanımsız yöntem 'sort_by' ..." !!

cevap

0

Sorunuz hakkında anlamadığım pek çok şey var: - Neden ProductStore'dan mi? - Neden SellOptionProduct'dan mi? - Ürünleri fiyata göre sıralamaya mı çalışıyorsunuz? - Satış seçenekleri farklı fiyatlara sahipse hangi fiyatı kullanıyorsunuz? - Farklı boyutlarda neden farklı fiyatlar var? - Product olması gereken v'dan ayıkladığınız value nedir?

Neyse ... sort_by genellikle Enumerable üzerinde çalışır ve Product görebildiğim kadarıyla bir değil. Bu nedenle kesin bir cevap, Ruby'nin undefined method 'sort_by' for Product olduğunu, sort_by'un Product üzerinde tanımlanmadığını veya tanımlayan bir sınıftan miras aldığınızı söylüyor.

seni daha böyle bir şey yapmak gerekiyordu tahmin ediyorum:

o zaman bile hariç
@store_products.sort_by {|k,v| v.value.price }? 

, ben value olduğunu bilmiyorum ve size ilgilenmek istiyorum anlamaya gerekecek Bir ürüne birden fazla fiyat vermeden önce sort_by'yi gerçekten bitirebilir, ancak umarım bu size doğru yönde işaret eder.

Sorunuzu netleştirin ve cevabı iyileştirmeye çalışıyorum.

+0

Inherits; çünkü ihtiyaç duyduğum daha çok yöntem var. Farklı fiyatlardan, min fiyatını seçen bir yönteme sahibim. Ve benim hatam, siparişi Ürün'e değil, yalnızca bunlardan birine uygulamamdı. – Rat