Sha256: 3e0c5d847315eb9f6b185918526d3cb2ca359024c4d7138c57264567573ef039

Contents?: true

Size: 890 Bytes

Versions: 5

Compression:

Stored size: 890 Bytes

Contents

class Article < CouchRest::Model::Base
  use_database DB
  unique_id :slug
  
  provides_collection :article_details, 'Article', 'by_date', :descending => true, :include_docs => true
  view_by :date, :descending => true
  view_by :user_id, :date
    
  view_by :tags,
    :map => 
      "function(doc) {
        if (doc['#{model_type_key}'] == 'Article' && doc.tags) {
          doc.tags.forEach(function(tag){
            emit(tag, 1);
          });
        }
      }",
    :reduce => 
      "function(keys, values, rereduce) {
        return sum(values);
      }"

  property :date, Date
  property :slug, :read_only => true
  property :user_id
  property :title
  property :tags, [String]

  timestamps!
  
  before_save :generate_slug_from_title
  
  def generate_slug_from_title
    self['slug'] = title.downcase.gsub(/[^a-z0-9]/,'-').squeeze('-').gsub(/^\-|\-$/,'') if new?
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
openlogic-couchrest_model-1.0.0 spec/fixtures/models/article.rb
couchrest_model-1.1.2 spec/fixtures/models/article.rb
couchrest_model-1.1.1 spec/fixtures/models/article.rb
couchrest_model-1.1.0 spec/fixtures/models/article.rb
couchrest_model-1.1.0.rc1 spec/fixtures/more/article.rb