forked from zargony/activerecord_symbolize
-
Notifications
You must be signed in to change notification settings - Fork 1
Symbolize attribute values in ActiveRecord (e.g. for nicer enums)
License
nuxlli/activerecord_symbolize
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
= Symbolize attribute values in ActiveRecord (e.g. for nicer enums) This plugin introduces an easy way to use symbols for values of ActiveRecord attributes. Symbolized attributes return a ruby symbol (or nil) as their value and can be set using symbols. == About Since ActiveRecord does not natively support database column types of ENUM or SET, you'll usually use a string attribute and restrict it to certain values with validations. Using this plugin, the values of such pseudo-enums are symbols, which look more ruby-style than strings. Simply add "symbolize :attr_name" to your model class, and the specified attribute will return symbol values and can be set using smbols (setting string values will still work, which is important when using forms). An attribute to symbolize should be a string (varchar) column in the database. Blog: http://zargony.com/ Github: http://github.com/zargony/activerecord_symbolize == Install ./script/plugin install git://github.com/zargony/activerecord_symbolize.git == Usage Add "symbolize :attr_name" to your model class. You may also want to add validates_inclusion_of to restrict the possible values (just like an enum). class User < ActiveRecord::Base symbolize :gender, :in => [:female, :male] symbolize :so, :in => { :windows => "Windows XP", :linux => "Linux", :mac => "Mac OS X" } symbolize :office, :allow_blank => true, :in => [ [:kde , 'Koffice'], [:ms , 'Microsoft Office'], [:open, 'Open Office'] ] end == Examples u = User.find_by_name('Anna') # => #<User Anna> u.gender # => :female u = User.find_by_gender(:male) # => #<User Bob> u.gender # => :male u = User.find(:all, :conditions => { :gender => :female }) u = User.new(:name => 'ET', :gender => :unknown) u.save # => validation fails == Examples Helpers <% form_for @user do |f| %> <%= f.radio_sym "gender" %> <!-- Alphabetic order --> <%= f.select_sym "so" %> <!-- Fixed order --> <%= f.select_sym "office" %> <% end %> output: <form action="users/1" method="post"> <div style="margin:0;padding:0">...</div> <label>Female <input id="user_gender_female" name="user[gender]" type="radio" value="female"></label> <label>Male <input checked="checked" id="user_gender_male" name="user[gender]" type="radio" value="male" ></label> <!-- Alphabetic order --> <select id="user_so" name="post[so]"> <option value="linux" selected="selected">Linux</option> <option value="mac">Mac OS X</option> <option value="windows">Windows XP</option> </select> <!-- Fixed order --> <select id="user_office" name="post[office]"> <option value="kde" selected="selected">Koffice</option> <option value="ms">Microsoft Office</option> <option value="open">Open Office</option> </select> </form> == Notes I've been using this for quite some time and made it a rails plugin now. More background iinformation can be found at http://zargony.com/2007/09/07/symbolize-attribute-values-in-activerecord Copyright (c) 2007-2008 Andreas Neuhaus, released under the MIT license
About
Symbolize attribute values in ActiveRecord (e.g. for nicer enums)
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
Languages
- Ruby 100.0%