Skip to content

Simple concerns to guard against direct manipulation of objects

License

Notifications You must be signed in to change notification settings

wulffeld/model_guard

Repository files navigation

model_guard

Gem Version Build Status Gem Downloads Maintainability

Two small concerns for ActiveRecord that can guard against direct creates, updates and destroys. Handy if you want to force the use of directing all persistence through service objects and guard against accidental CRUD operations in the console.

Installation

Include the gem in your Gemfile:

gem "model_guard"

Usage

Create / update protection

Protects against #save, #save!, #update, #update!. Instead use #guarded_save, #guarded_save!, #guarded_update, #guarded_update! or #guarded_create.

class User < ActiveRecord::Base
  include ModelGuard::CreateOrUpdateGuard
end

CreateGuardedUser.guarded_create(name: "Joe")
user.guarded_update(name: "Joe")

or

user.allow_direct_create_or_update!
user.save

Destroy protection

class User < ActiveRecord::Base
  include ModelGuard::DestroyGuard
end

Will raise an exception when calling destroy on an instance of User. Instead use guarded_destroy or guarded_destroy!.

user.guarded_destroy
user.guarded_destroy!

Support

Submit suggestions or feature requests as a GitHub Issue or Pull Request (preferred). If you send a pull request, remember to update the corresponding unit tests and/or add new tests.

About

Simple concerns to guard against direct manipulation of objects

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages