Repository is archived
No commit activity in last 3 years
No release in over 3 years
Default scope in datamapper
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

<= 1.2
 Project Readme

Gem Version

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: 'john@doe.com', 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="john@doe.com" @deleted=true>
  end