Module: Recommendable::Rater::Hider

Defined in:
lib/recommendable/rater/hider.rb

Instance Method Summary collapse

Instance Method Details

#hidden_countFixnum

Get the number of items the user has hidden

Returns:

  • (Fixnum)

    the number of hidden items



60
61
62
63
64
# File 'lib/recommendable/rater/hider.rb', line 60

def hidden_count
  Recommendable.config.ratable_classes.inject(0) do |sum, klass|
    sum + hidden_count_for(klass)
  end
end

#hide(obj) ⇒ Object

Hide an object. This action is only possible if the user has not yet rated or bookmarked the object.

Parameters:

  • obj (Object)

    the object to be hidden

Returns:

  • true if object was hidden successfully

Raises:

  • (ArgumentError)

    if the passed object was not declared ratable



10
11
12
13
14
15
16
17
18
19
# File 'lib/recommendable/rater/hider.rb', line 10

def hide(obj)
  raise(ArgumentError, 'Object has not been declared ratable.') unless obj.respond_to?(:recommendable?) && obj.recommendable?
  return if likes?(obj) || dislikes?(obj) || bookmarks?(obj) || hides?(obj)

  run_hook(:before_hide, obj)
  Recommendable.redis.sadd(Recommendable::Helpers::RedisKeyMapper.hidden_set_for(obj.class, id), obj.id)
  run_hook(:after_hide, obj)

  true
end

#hides?(obj) ⇒ Boolean

Check whether the user has hidden an object.

Parameters:

  • obj (Object)

    the object in question

Returns:

  • (Boolean)

    true if the user has hidden obj, false if not



25
26
27
# File 'lib/recommendable/rater/hider.rb', line 25

def hides?(obj)
  Recommendable.redis.sismember(Recommendable::Helpers::RedisKeyMapper.hidden_set_for(obj.class, id), obj.id)
end

#hidingArray

Retrieve an array of objects the user has hidden

Returns:

  • (Array)

    an array of records



46
47
48
# File 'lib/recommendable/rater/hider.rb', line 46

def hiding
  Recommendable.config.ratable_classes.map { |klass| hidden_for(klass) }.flatten
end

#hiding_in_common_with(user) ⇒ Array

Retrieve an array of objects both this user and another user have hidden

Returns:

  • (Array)

    an array of records



53
54
55
# File 'lib/recommendable/rater/hider.rb', line 53

def hiding_in_common_with(user)
  Recommendable.config.ratable_classes.map { |klass| hidden_in_common_with(klass, user) }.flatten
end

#unhide(obj) ⇒ Object

Unhide an object. This removes the object from a user’s set of hidden items.

Parameters:

  • obj (Object)

    the object to be made visible

Returns:

  • true if the object was successfully made visible, nil if the object wasn’t already hidden



33
34
35
36
37
38
39
40
41
# File 'lib/recommendable/rater/hider.rb', line 33

def unhide(obj)
  return unless hides?(obj)

  run_hook(:before_unhide, obj)
  Recommendable.redis.srem(Recommendable::Helpers::RedisKeyMapper.hidden_set_for(obj.class, id), obj.id)
  run_hook(:after_unhide, obj)

  true
end