Module: Espresso::Model::ClassMethods

Defined in:
lib/espresso/model.rb

Instance Method Summary collapse

Instance Method Details

#make_slug(object) ⇒ String

Make a slug from object’s NameField

Parameters:

  • object, (ActiveRecord::Base)

    which slug is making

Returns:

  • (String)

    slug



47
48
49
# File 'lib/espresso/model.rb', line 47

def make_slug(object)
  object.send(name_field).parameterize
end

#name_fieldSymbol

«NameField» is a main field, used to represent model in to_s method and in simple queries

Parameters:

  • new_name_field (Symbol, String)

    new field name

Returns:

  • (Symbol)

    field name



40
41
42
# File 'lib/espresso/model.rb', line 40

def name_field
  :name
end

#paginate_found(page = nil, query = nil, simple_query = nil) ⇒ Array

TODO:

Add an options to paginating

Paginates search results

Parameters:

  • page (Integer) (defaults to: nil)

    number of results’ page

  • query (Hash) (defaults to: nil)

    searchlogic fields (proc’ed named scopes’ names with values)

  • simple_query (String) (defaults to: nil)

    params for simple «LIKE ‘%something%’» searches (e.g. /people?q=Alexander)

Returns:

  • (Array)

    searchlogic object and collection of results



20
21
22
23
24
25
26
# File 'lib/espresso/model.rb', line 20

def paginate_found(page = nil, query = nil, simple_query = nil)
  query ||= {}
  query.merge!(parse_simple_query(simple_query)) if simple_query.present?
  @search = search(query)
  @results = @search.paginate(:page => page)
  [@search, @results]
end

#parse_simple_query(query) ⇒ Hash

Make searchlogic query from simple query option Needed to be reimplemented in subclasses

Parameters:

  • simple (String)

    query string

Returns:

  • (Hash)

    searchlogic query



33
34
35
# File 'lib/espresso/model.rb', line 33

def parse_simple_query(query)
  {:"#{name_field}_like" => query}
end