def add_attribute attribute
attr_name = attribute.name
attributes[attr_name] = attribute
define_method("#{attr_name}=") do |value|
self[attr_name] = value
end
define_method(attr_name) do
self[attr_name]
end
define_method("#{attr_name}_before_type_cast") do
@_data[attr_name]
end
define_method("#{attr_name}_changed?") do
attribute_changed?(attr_name)
end
define_method("#{attr_name}_change") do
attribute_change(attr_name)
end
define_method("#{attr_name}_was") do
attribute_was(attr_name)
end
define_method("#{attr_name}_will_change!") do
attribute_will_change!(attr_name)
end
define_method("reset_#{attr_name}!") do
reset_attribute!(attr_name)
end
attribute
end