さまざまなクラスに属性とメソッドVotable
を与えるために使用しているというモジュールがあります。ただし、オブジェクトのコレクションを投票数で並べ替えることも必要です。このモジュールを使用してこのソート動作を定義する方法はありますか?votes
vote_up
vote_down
Votable
module Votable
attr_reader :votes
def votes
@votes ||= 0
end
def vote_up
@votes += 1
end
def vote_down
@votes -= 1
end
end
class Topic
def initialize
@comments = []
end
def add_comment(comment)
@comments << comment
end
def comments
# this code needs to be duplicated in every class that has a
# collection of votables, but on a different collection
@comments.sort { |a,b| b.votes <=> a.votes }
end
end
class Comment
include Votable
end