Skip to content
Snippets Groups Projects
search.rb 832 B
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
  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)}

  def initialize(params={})
    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"