Class: ActiveModel::Attribute::UserProvidedDefault
- Inherits:
-
FromUser
- Object
- ActiveModel::Attribute
- FromUser
- ActiveModel::Attribute::UserProvidedDefault
- Defined in:
- activemodel/lib/active_model/attribute/user_provided_default.rb
Overview
:nodoc:
Instance Attribute Summary
Attributes inherited from ActiveModel::Attribute
Instance Method Summary collapse
-
#dup_or_share ⇒ Object
:nodoc:.
-
#initialize(name, value, type, database_default) ⇒ UserProvidedDefault
constructor
A new instance of UserProvidedDefault.
- #marshal_dump ⇒ Object
- #marshal_load(values) ⇒ Object
- #value_before_type_cast ⇒ Object
- #with_type(type) ⇒ Object
Methods inherited from ActiveModel::Attribute
#==, #came_from_user?, #changed?, #changed_in_place?, #encode_with, #forgetting_assignment, from_database, from_user, #has_been_read?, #hash, #init_with, #initialized?, null, #original_value, #original_value_for_database, #serializable?, #type_cast, uninitialized, #value, #value_for_database, #with_cast_value, with_cast_value, #with_user_default, #with_value_from_database, #with_value_from_user
Constructor Details
#initialize(name, value, type, database_default) ⇒ UserProvidedDefault
Returns a new instance of UserProvidedDefault.
12 13 14 15 |
# File 'activemodel/lib/active_model/attribute/user_provided_default.rb', line 12 def initialize(name, value, type, database_default) @user_provided_value = value super(name, value, type, database_default) end |
Instance Method Details
#dup_or_share ⇒ Object
:nodoc:
29 30 31 32 33 34 35 36 37 |
# File 'activemodel/lib/active_model/attribute/user_provided_default.rb', line 29 def dup_or_share # :nodoc: # Can't elide dup when the default is a Proc # See Attribute#dup_or_share if @user_provided_value.is_a?(Proc) dup else super end end |
#marshal_dump ⇒ Object
39 40 41 42 43 44 45 46 47 48 |
# File 'activemodel/lib/active_model/attribute/user_provided_default.rb', line 39 def marshal_dump result = [ name, value_before_type_cast, type, original_attribute, ] result << value if defined?(@value) result end |
#marshal_load(values) ⇒ Object
50 51 52 53 54 55 56 57 58 59 |
# File 'activemodel/lib/active_model/attribute/user_provided_default.rb', line 50 def marshal_load(values) name, user_provided_value, type, original_attribute, value = values @name = name @user_provided_value = user_provided_value @type = type @original_attribute = original_attribute if values.length == 5 @value = value end end |
#value_before_type_cast ⇒ Object
17 18 19 20 21 22 23 |
# File 'activemodel/lib/active_model/attribute/user_provided_default.rb', line 17 def value_before_type_cast if user_provided_value.is_a?(Proc) @memoized_value_before_type_cast ||= user_provided_value.call else @user_provided_value end end |
#with_type(type) ⇒ Object
25 26 27 |
# File 'activemodel/lib/active_model/attribute/user_provided_default.rb', line 25 def with_type(type) self.class.new(name, user_provided_value, type, original_attribute) end |