make-private
make-private is an ActiveRecord extension that will make all your active record properties private and give you control over what is private and what should be public.
Why make-private
By default active record makes all properties and associations public which does make it faster to develop with but breaks encapsulation by default. make-private has been developed to bring back encapsulation to active record model.
Status
make-private is currently in development
Example
To use make-private private you simply have to include the module in your model, simple.
require 'make-private'
class BusinessModel < ActiveRecord::Base
#a_property: string
include MakePrivate
end
business_model = BusinessModel.new
business_model.a_property # This will throw a NoMethodError exception
Properties can be set as normal from within the model
require 'make-private'
class BusinessModel < ActiveRecord::Base
#a_property: string
include MakePrivate
def do_something_useful parameter
##some logic
self.a_property = parameter
end
end
If you require to make a property publicly readable set the method to public
require 'make-private'
class BusinessModel < ActiveRecord::Base
#a_property: string
include MakePrivate
public :a_property
end
business_model = BusinessModel.new
business_model.a_property # This will no longer throw a NoMethodError exception
business_model.a_property = "something interesting" # This will still throw a NoMethodError exception
Similarly if you really really really need to make the property setter public.
require 'make-private'
class BusinessModel < ActiveRecord::Base
#a_property: string
include MakePrivate
public :a_property, :a_property=
end
business_model = BusinessModel.new
business_model.a_property # This will no longer throw a NoMethodError exception
business_model.a_property = "something interesting" # This will not throw a NoMethodError exception
Notes
Please send any questions, comments or feedback to pythonandchipsatgmail.com.
Cheers Colin