我正在運行一個在線手提包商店,手提包可以是四種顏色 - 黑色,棕色,橙色和紅色。我注意到,黑色手袋早於棕色手袋等等。這意味着人們最喜歡黑色手袋。如何改進這段代碼
在網上商店的主頁上,我想選擇和顯示網格佈局中的10袋。所以我首先選擇黑色的包包。如果我的庫存中有10個或更多的黑色袋子,那麼我會停下來,不要去尋找其他顏色的袋子。但是,如果我有5個黑色包包,我會繼續尋找棕色包包。如果我還沒有10袋,那麼加入那些棕色袋子後,我會尋找橙色袋子等等。
下面是我在實施這一方案爲Rails的模型方法的嘗試:
class Handbag < ActiveRecord::Base
belongs_to :store
attr_accessor :color
end
class Store < ActiveRecord::Base
has_many :handbags
def handags_for_display
selected_handbags = []
["black", "brown", "orange", "red"].each do |color|
bags = get_handbags_by_color(color)
selected_bags += bags
if selected_bags.size >= 10
selected_handbags = selected_handbags[0..9]
break
end
end
selected_handbags
end
private
def get_handbags_by_color(color)
handbags.where("color = ?", color).limit(10)
end
end
雖然這個作品,我很好奇,如果有更好的方式來寫它。特別是,我認爲這個代碼可以轉換爲使用Ruby的枚舉器。
這對[Code Review.SE](http://s.tk/review)是一個更好的問題。 –