Module: Predictable::Item::ClassMethods

Defined in:
lib/predictable/item.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#pio_enginesObject



64
65
66
# File 'lib/predictable/item.rb', line 64

def pio_engines
  @pio_engines || Predictable.engines
end

#recommenderObject



68
69
70
# File 'lib/predictable/item.rb', line 68

def recommender
  @recommender ||= Recommender.new(Predictable.client, pio_engines)
end

Instance Method Details

#pio_itypeObject



72
73
74
# File 'lib/predictable/item.rb', line 72

def pio_itype
  to_s.underscore
end


76
77
78
79
80
81
82
83
# File 'lib/predictable/item.rb', line 76

def recommended_for(user, opts = {})
  options = { "itypes" => [pio_itype] }.merge(opts)
  limit = options.delete("limit") || 10

  item_ids = recommender.recommended_items(user, limit, options)
  item_ids = item_ids.map { |id| id.gsub! /[^\d]/, '' }
  where(:id => item_ids)
end

#similar_to(item, opts = {}) ⇒ Object



85
86
87
88
89
90
91
92
93
# File 'lib/predictable/item.rb', line 85

def similar_to(item, opts={})
  options = opts.stringify_keys
  options["pio_itypes"] ||= [pio_itype]
  limit = options.delete("limit") || 10

  item_ids = recommender.similar_items(item, limit, options)
  item_ids = item_ids.map { |id| id.gsub! /[^\d]/, '' }
  where(:id => item_ids)
end