has_dictionary Gem
ActiveRecord association with a class-based tableless enumerators.
install
in Gemfile add:
gem 'has_dictionary', :git=>'https://github.com/aloon/has_dictionary.git'
and execute:
$ bundle install
how it works
Yoy must create a class with the definitions of Enums:
models/status.rb:
class Status < Dictionary
self.add_item :NEW, 0
self.add_item :GENERATING, 1
self.add_item :RUN, 2
self.add_item :DELETING, 3
end
In your ActiveRecord class
class MyClass < ActiveRecord::Base
attr_accessible :name, :status_id
has_dictionary :dic_class=>Status, :field=>:status_id, :method=>'status'
end
now you can:
MyClass.find(1).status
# returns #<Status:0x00 @id=0, @desc="NEW">
MyClass.find(1).status.desc
# returns "NEW"
element = MyClass.find(1)
element.status_id = Status::GENERATING
elements.save
# this save element.status_id with the value 1
Status.get
#returns [#<Status:0x00 @id=0, @desc="NEW">, #<Status:0x00 @id=1, @desc="GENERATING">, #<Status:0x00 @id=2, @desc="RUN">, #<Status:0x00 @id=3, @desc="DELETING">]