Commit 00eca6c2 by Tran Hoang Viet

VietTH: Implement sorl callback to product

parent 389b2433
module Solr extend ActiveSupport::Concern module Solr extend ActiveSupport::Concern
included do
after_save :push_data_to_solr
after_destroy :remove_from_solr
# callbacks
def push_data_to_solr
self.class.rsolr.add(self.slice(*self.class.solr_fields))
self.class.rsolr.commit
end
def remove_from_solr
self.class.rsolr.delete_by_id(self[self.class.primary_key])
self.class.rsolr.commit
end
end
module ClassMethods module ClassMethods
attr_accessor :solr_per_page, :solr_page, :solr_total_count attr_accessor :solr_per_page, :solr_page, :solr_total_count, :solr_fields
def solr_options(fields = {}) def solr_options(fields = {})
@solr_per_page = fields[:per_page] || 5 @solr_per_page = fields[:per_page] || 5
@solr_fields = fields[:fields] || []
end end
def search(query, options = {}) def search(query, options = {})
...@@ -34,6 +51,5 @@ module Solr extend ActiveSupport::Concern ...@@ -34,6 +51,5 @@ module Solr extend ActiveSupport::Concern
def kaminari_paginate def kaminari_paginate
Kaminari.paginate_array([], total_count: solr_total_count).page(solr_page).per(solr_per_page) Kaminari.paginate_array([], total_count: solr_total_count).page(solr_page).per(solr_per_page)
end end
end end
end end
\ No newline at end of file
...@@ -17,5 +17,5 @@ class Product < ActiveRecord::Base ...@@ -17,5 +17,5 @@ class Product < ActiveRecord::Base
mount_uploader :image, ImageUploader mount_uploader :image, ImageUploader
solr_options per_page: 2 solr_options per_page: 2, fields: [:id, :title]
end end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment