Sha256: a1878272605063b2293f4180dd4dc60773fb2be92977ad645e88c5fcbf8881ec

Contents?: true

Size: 560 Bytes

Versions: 4

Compression:

Stored size: 560 Bytes

Contents

# Trait to provide an inactive state to any ActiveRecord model, e.g. a class supporting soft-deletion or archival.
# origin: RM
module AfterlifeTrait

  as_trait do |*options|
    options = options.first || {}
    adjective = options.delete(:as) || 'deleted'
    
    with_adjective ="with_#{adjective}"

    does "flag", adjective, :default => false
    named_scope :active, :conditions => { adjective => false }
    named_scope with_adjective, lambda { |show_perished|
      { :conditions => (show_perished ? nil : { adjective => false }) }
    }
  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/shared/afterlife_trait.rb
serum-rails-0.2.0 spec/test_apps/rails-2-3/app/models/shared/afterlife_trait.rb
serum-rails-0.1.1 spec/test_app/app/models/shared/afterlife_trait.rb
serum-rails-0.1.0 spec/test_app/app/models/shared/afterlife_trait.rb