Sha256: 48bdeb54238a858b742fa01df11186e28d0b7c600b73d04682f3915765ca7aea

Contents?: true

Size: 709 Bytes

Versions: 2

Compression:

Stored size: 709 Bytes

Contents

module Recommendations
  class Item
    include Item::Ratings
    include Item::Similarity

    attr_accessor :id
    attr_writer :categories

    def initialize(id, categories = {})
      @id, @categories = id, categories
    end

    def categories
      @categories || {}
    end

    def save!
      Recommendations.redis.hmset("recommendations:item:#{id}", *categories.flatten)

      categories.each do |category, score|
        Recommendations.redis.hset("recommendations:categories:#{category}", id, score)
      end
    end

    def self.find(id)
      categories = Recommendations.redis.hgetall("recommendations:item:#{id}")
      new(id, categories)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
recommendations2-0.0.5 lib/recommendations/item.rb
recommendations2-0.0.4 lib/recommendations/item.rb