ハンドバッグは、ブラック、ブラウン、オレンジ、レッドの4色からなるオンラインハンドバッグストアを運営しています。私は、黒いハンドバッグが茶色のハンドバッグよりも早く売れることに気付いています。つまり、黒いハンドバッグのような人々が一番です。このコードを改善するには
オンラインストアのホームページでは、グリッドレイアウトで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のEnumeratorを使用するように変換できると思います。
[Code Review.SE](http://s.tk/review)の方がより良い質問です。 –