Newer
Older
class Search
include ActiveModel::Model
# *current_user* search by *query*
include Trackable
attr_accessor :page, :results_per_page, :order, :query, :search_class, :tags, :types, :sources

Israel Barreto Sant'Anna
committed
validates_presence_of :query, :results_per_page, :order, :search_class
validates_numericality_of :results_per_page, greater_than: 0
validates :search_class, inclusion: {in: %w(LearningObject Collection User)}

Israel Barreto Sant'Anna
committed
super(defaults.merge(params.select { |key,value| self.respond_to? key }))
end
def learning_object?
@search_class == "LearningObject"
end
def collection?
@search_class == "Collection"
end
def user?
@search_class == "User"
end
private
def defaults
{

Israel Barreto Sant'Anna
committed
query: '*',
order: 'score',

Israel Barreto Sant'Anna
committed
results_per_page: 10