0

さまざまなクラスに属性とメソッドVotableを与えるために使用しているというモジュールがあります。ただし、オブジェクトのコレクションを投票数で並べ替えることも必要です。このモジュールを使用してこのソート動作を定義する方法はありますか?votesvote_upvote_downVotable

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
4

1 に答える 1