Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
(UNMAINTAINED) Do Not Want: Stops ActiveRecord from doing things you probably didn't want
Ruby
tree: 76576eda6d

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
spec
.rvmrc
CHANGELOG.md
Manifest.txt
README.md
Rakefile

README.md

Do Not Want

DESCRIPTION:

Several methods in ActiveRecord skip validations, callbacks, or both. In my extremely humble but also extremely correct opinion, it's too easy to accidentally use these.

Do Not Want kills those methods dead so you won't cut yourself on them:

>> User.new.update_attribute(:foo, 5)
DoNotWant::NotSafe: User#update_attribute isn't safe because it skips validation

Why Do It Do It

In my experience, even experienced Rails developers don't know which ActiveRecord methods skip validations and callbacks. Quick: which of decrement, decrement!, and decrement_counter skip which? (Hint: they're all different.)

How Do It Do It

It define_methods them away.

But! Calls to the unsafe methods are allowed from within gems. This keeps Rails from breaking, and allows existing jank to exist while keeping your app as jank-free as possible.

The disabled instance methods are:

:decrement
:decrement!
:increment
:increment!
:toggle
:toggle!
:update_attribute

The disabled class methods are:

:decrement_counter
:delete
:delete_all
:find_by_sql
:increment_counter
:update_all
:update_counters

The particular transgressions that these methods make are documented in the source.

The Rails ActiveRecord guide contains lists about methods that skip validation and callbacks. That's where this list came from.

Something went wrong with that request. Please try again.