Module: SimplySuggest::ControllerHelper
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/simply_suggest/controller_helper.rb
Instance Method Summary collapse
-
#get_trending_objects(klass, options = {}) ⇒ Object
returns trending data for the object type.
-
#recommendations_for(item, options = {}) ⇒ Object
returns recommendations for the item.
- #search_objects(query, klass, options = {}) ⇒ Object
-
#user_recommendations(user_id, options = {}) ⇒ Object
returns recommendations for the user_id.
Instance Method Details
#get_trending_objects(klass, options = {}) ⇒ Object
returns trending data for the object type
klass : string options : hash [optional]
46 47 48 49 50 51 52 53 |
# File 'lib/simply_suggest/controller_helper.rb', line 46 def get_trending_objects klass, = {} = .reverse_merge() data = request_object.object_type.trending.send(klass).page(page).limit(limit).get return [] if data["trending"].blank? return klass.classify.constantize.where(id: data["trending"].map { |d| d["external_id"] }) if [:load] data["trending"].map { |d| { type: d["object_type"], id: d["external_id"] } } end |
#recommendations_for(item, options = {}) ⇒ Object
returns recommendations for the item
item : object options : hash [optional]
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/simply_suggest/controller_helper.rb', line 10 def recommendations_for item, = {} = .reverse_merge() klass = item.is_a?(Hash) ? item.delete(:class) : item.class.to_s.downcase object_id = item.is_a?(Hash) ? item.delete(:object_id) : item.id data = request_object.object_types.send(klass).object.recommendations.page([:page]).limit([:limit]).get(object_id) return [] if data["recommendations"].blank? ids = data["recommendations"].map { |d| d["recommendation_id"] } return item.class.where(id: ids) if [:load] ids end |
#search_objects(query, klass, options = {}) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/simply_suggest/controller_helper.rb', line 55 def search_objects query, klass, = {} = .reverse_merge() request = request_object.object_type.search.send(klass).page([:page]).limit([:limit]).add_params(query: query) request.add_param(:conditions, [:conditions]) if [:conditions].present? request.add_param(:facets, [:facets]) if [:facets].present? data = request.get return [] if data["objects"].blank? if [:load] values = {} values[:results] = data["objects"].map { |d| d["object_type"].classify.constantize.where(id: d["external_id"]).first }.reject(&:nil?) values[:facets] = data["facets"] values[:conditions] = data["conditions"] return values end data end |
#user_recommendations(user_id, options = {}) ⇒ Object
returns recommendations for the user_id
user_id : integer options : hash [optional]
28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/simply_suggest/controller_helper.rb', line 28 def user_recommendations user_id, = {} = .reverse_merge() if [:object_type].present? data = request_object.user.send([:object_type]).recommendations.page([:page]).limit([:limit]).get(user_id) else data = request_object.user.recommendations.page(page).limit(limit).get(user_id) end return [] if data["recommendations"].blank? return data["recommendations"].map { |d| d["object_type"].classify.constantize.where(id: d["recommendation_id"]).first }.reject(&:nil?) if [:load] data["recommendations"].map { |d| { type: d["object_type"], id: d["recommendation_id"] } } end |