XmlProtected
Keeps specified attributes of a model out of to_xml, by aliasing to_xml, and automatically sending in the correct :excludes to the original to_xml method, e.g. :excludes => [:attr1, :attr2, ...]
NOTE: as of this time, it doesn’t protect these attributes from reading. For that, use this in conjunction with :attr_protected
Usage
An ActiveRecord Model:
class Model < ActiveRecord::Base
include XmlProtected # Required because it's a gemmefied plugin
xml_protected :attr1, :attr2, :attr3
end
You can also access these attributes from the added class method:
protected_xml_attributes
In Conjunction with attr_protected
class Model < ActiveRecord::Base
include XmlProtected # Required because it's a gemmefied plugin
attr_protected :attr1, :attr2, :attr3
xml_protected :attr1, :attr2, :attr3
end
Installation
To enable the library your Rails 2.1 (or greater) project, use the gem configuration method in “config/environment.rb”
Rails::Initializer.run do |config|
config.gem 'thrivesmart-xml_protected', :lib => 'xml_protected', :source => 'http://gems.github.com'
end
The :lib is important, because rails gets confused when the name of the gem is different from the library.
And of course, run
rake gems:install
To get them installed on your system.
Optionally, to unpack it into your application, just run:
rake gems:unpack GEM=thrivesmart-xml_protected
How it works
Two methods are extended onto your active record class:
1. xml_protected(*attributes)
2. protected_xml_attributes
1. Adds to the inheritable attribute “xml_protected_attrs” the attributes that are speicified in this call. If this is the first time the method is called, it also aliases the old to_xml, and specified a new one which reads from these xml_protected_attrs
2. Simply returns the values currently in “xml_protected_attrs”.
One method is included into your active record class, which is pretty self explanatory:
def to_xml( = {})
[:except] ||= []
xml_protected_to_xml(.merge(:except => [:except].concat(self.class.protected_xml_attributes)))
end
Copyright & License
Copyright © 2008 ThriveSmart, LLC, released under the MIT license