Sha256: ed89a8f35e0ba3e042efe4d1326a24f9eb5b0410f24c1d7419fb1c591309013b

Contents?: true

Size: 1.17 KB

Versions: 4

Compression:

Stored size: 1.17 KB

Contents

# Trait to provide search functionality for conferences.
# origin: M
module Conference::SearchTrait

  as_trait do

    does 'searchable', :text_means => 'query'

    named_scope :in_categories, lambda { |ids| { :conditions => ['conference_categories.category_id IN (?)', ids], :joins => :conference_categories, :group => 'conferences.id' } }

    named_scope :from_date, lambda { |date| { :conditions => ['conferences.end_date >= ?', date] } }
    named_scope :until_date, lambda { |date| { :conditions => ['conferences.start_date <= ?', date] } }

    search_by :query do |query|
      scoped :conditions => Util.like_query('CONCAT_WS(" ", conferences.name, conferences.description)', query)
    end

    search_by :from do |date_string|
      date = Date.parse(date_string) rescue nil
      if date
        from_date(date)
      else
        self
      end
    end

    search_by :until do |date_string|
      date = Date.parse(date_string) rescue nil
      if date
        until_date(date)
      else
        self
      end
    end

    search_by :cat do |category_string|
      category_id = Category.find_by_name(category_string).andand.id
      in_categories([category_id])
    end


  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
serum-rails-0.2.1 spec/test_apps/rails-2-3/app/models/conference/search_trait.rb
serum-rails-0.2.0 spec/test_apps/rails-2-3/app/models/conference/search_trait.rb
serum-rails-0.1.1 spec/test_app/app/models/conference/search_trait.rb
serum-rails-0.1.0 spec/test_app/app/models/conference/search_trait.rb