Use a default scope with datamapper

DataMapper does not provide a way to set a default scope in a model. If you need, for example, to handle soft deletes, it is a must to have a default scope with :deleted =>false as a condition.

This library recreates the absolutely minimal feature for setting a default scope

Usage

  class User
    include DataMapper::Resource
    include DataMapper::DefaultScope

    property :id, Serial
    property :email, String
    property :deleted, Boolean

    set_default_scope({:deleted=> false})
  end

  User.create(email: '[email protected]', deleted: true)
  User.get(1) #=> nil

Unscoped

If you need to bypass the default scope you can do it inside an unscoped block:

  User.unscoped do
    User.get(1) #=> <User @id=1 @email="[email protected]" @deleted=true>
  end