Maskable Attribute
maskable_attribute is an ActiveRecord extension that allows for 'masking' a records' attribute. It provides the ability to have an objects' attribute be dynamically assigned at a given point in time while providing the capability to make a one-location change that propagates through all resulting objects containing the resulting attribute mask.
Install
Via rubygems:
gem install maskable_attribute
Via bundler:
Add the following line to Gemfile:
gem 'maskable_attribute'
Then, run bundler:
bundle install
Usage
To use the maskable_attribute gem, simply create corresponding maskable_attribute attributes in the ActiveRecord model that you wish to affect.
For example, the following User class has a maskable attribute of :foo that can contain values of :bar, :baz and :qux
class User < ActiveRecord::Base
maskable_attribute :foo, [ :bar, :baz ]
end
Creating a user with the above mask can be performed via the following:
user = User.new :bar => "a", :baz => "b", :foo => "{bar}-{baz}"
Now that the user object is created, there are several accessor methods to return different variations of the attribute:
user.masks # { :foo => { :bar, :baz } }
user.foo.masks # [ :bar, :baz ]
user.foo # "a-b"
user.foo.unmasked # "{bar}-{baz}"
Supported Ruby versions
Maskable Attribute supports Ruby 1.9.x+
Additional Information
Contributing
Contributions to the code-base are welcomed and handled via the normal Github pull request process.
Owner
maskable_attribute is written and maintained by Bill Transue