Module: AttrDefault::ClassMethods
- Defined in:
- lib/attr_default.rb
Instance Method Summary collapse
- #_attr_defaults ⇒ Object
- #attr_default(attr_name, default) ⇒ Object
-
#field_added(name, type, args, options) ⇒ Object
Hobo Fields field declaration.
Instance Method Details
#_attr_defaults ⇒ Object
40 41 42 |
# File 'lib/attr_default.rb', line 40 def _attr_defaults @_attr_defaults ||= (superclass._attr_defaults.dup rescue nil) || {} end |
#attr_default(attr_name, default) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/attr_default.rb', line 3 def attr_default attr_name, default if !method_defined?(:_attr_default_set) include AttrDefault::InstanceMethods end attr_name = attr_name.to_s _attr_defaults[attr_name] = default define_method(attr_name) do if new_record? && !@_attr_defaults_set_from_dup && !_attr_default_set[attr_name] reset_to_default_value(attr_name) end read_attribute_with_fixups(attr_name) end define_method("#{attr_name}=") do |*args| _attr_default_set[attr_name] = true write_attribute_with_fixups(attr_name, args) end touch_proc = lambda { |obj| obj.send(attr_name); true } before_validation touch_proc before_save touch_proc end |
#field_added(name, type, args, options) ⇒ Object
Hobo Fields field declaration
29 30 31 32 33 34 35 36 37 38 |
# File 'lib/attr_default.rb', line 29 def field_added(name, type, args, ) if (default = [:ruby_default]) attr_default name, default elsif (default = [:default]) && default.is_a?(Proc) ActiveSupport::Deprecation.warn(':default => Proc has been deprecated. Use :ruby_default.', caller) attr_default name, default .delete(:default) [:ruby_default] = default end end |