Updated readme

This commit is contained in:
Nicholas Bruning 2013-11-06 10:54:17 +11:00
parent 5243007991
commit efc2367a8b

View File

@ -1,6 +1,7 @@
# Mongoid::Enum
Heavily inspired by DHH's ActiveRecord::Enum, this little library is
Heavily inspired by [DHH's
ActiveRecord::Enum](https://github.com/rails/rails/commit/db41eb8a6ea88b854bf5cd11070ea4245e1639c5), this little library is
just there to help you cut down the cruft in your models and make the
world a happier place at the same time.
@ -28,6 +29,79 @@ class Payment
end
````
Aaaaaaand then you get things like:
````
payment = Payment.create
payment.status
# => :pending
payment.approved!
# => :approved
payment.pending?
# => :false
Payment.approved
# => Mongoid::Criteria for payments with status == :approved
````
# Features
## Field
Your enum value is stored as either a Symbol, or an Array (when storing
multiple values). The actual field name has a leading underscore (e.g.:
`_status`), but is also aliased with its actual name for you
convenience.
## Accessors
Your enums will get getters-and-setters with the same name. So using the
'Payment' example above:
````
payment.status = :declined
payment.status
# => :declined
````
And you also get bang(!) and query(?) methods for each of the values in
your enum (see [this example](#Usage).
## Constants
For each enum, you'll also get a constant named after it. This is to
help you elsewhere in your app, should you need to display, or leverage
the list of values. Using the above example:
````
Payment::STATUS
# => [:pending, :approved, :declined]
````
## Validations
Enum values are automatically validated against the list. You can
disable this behaviour (see (below)[#Options]).
## Scopes
A scope added for each of your enum's values. Using the example above,
you'd automatically get:
````
Payment.pending # => Mongoid::Criteria
Payment.approved # => Mongoid::Criteria
Payment.declined # => Mongoid::Criteria
````
# Options