module Recommendable::Rater::Hider
Public Instance Methods
Hide an object. This action is only possible if the user has not yet rated or bookmarked the object.
@param [Object] obj the object to be hidden @return true if object was hidden successfully @raise [ArgumentError] if the passed object was not declared ratable
# 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
Check whether the user has hidden an object.
@param [Object] obj the object in question @return true if the user has hidden obj, false if not
# 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
Retrieve an array of objects the user has hidden
@return [Array] an array of records
# File lib/recommendable/rater/hider.rb, line 46 def hiding Recommendable.config.ratable_classes.map { |klass| hidden_for(klass) }.flatten end
Retrieve an array of objects both this user and another user have hidden
@return [Array] an array of records
# 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 an object. This removes the object from a user's set of hidden items.
@param [Object] obj the object to be made visible @return true if the object was successfully made visible, nil if the object wasn't already hidden
# 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