Adds a virtual attribute to models, that plays nice with forms etc

example:

class MyModel < ActiveRecord::Base
  virtual_attribute :foo, :type => :boolean, :attr_type => :attr_accessible
  virtual_attribute :bar, :type => :boolean, :attr_type => :attr_accessible
  virtual_attribute :dated_on, :type => :date, :attr_type => :attr_accessible
end

params = {:foo => '1', :bar => 'false'}
thing = MyModel.new(params)

thing.foo #=>true
thing.bar #=> false

Virtual attributes can be set to :type => :boolean

  • This will parse ['yes', 'true', '1', 1] to be true
  • and ['no', 'false', '0', 0] to be false
  • otherwise will be nil
  • this allows them to be used transparently with checkboxes etc in forms

Virtual attributes can be set to :type => :date, :type => :time, :type => :datetime

  • This allows them to be used with date_select etc helpers in rails forms

If using attr_accessible in your model, the virtual attribute should be added to the list to, or you can pass:

:attr_type => :attr_accessible 

as an option as shown above to have it done for you

Will document better later, until then: phil at latentflip dot com