Class: Lafcadio::ObjectField
- Inherits:
-
Object
- Object
- Lafcadio::ObjectField
- Includes:
- Comparable
- Defined in:
- lib/lafcadio/objectField.rb,
lib/lafcadio/test.rb
Overview
ObjectField is the abstract base class of any field for domain objects. Fields can be added to a domain class using DomainObject.string, DomainObject.integer, etc.
class User < Lafcadio::DomainObject
string 'fname'
date 'birthday'
end
All fields accept the following arguments in hashes:
- not_nil
-
This is
true
by default. Set it tofalse
to avoid checking for nil values in tests. - db_field_name
-
By default, fields are assumed to have the same name in the database, but you can override this assumption using
db_field_name
.
class User < Lafcadio::DomainObject
string 'fname', { 'not_nil' => false }
date 'birthday', { 'db_field_name' => 'bday' }
end
Direct Known Subclasses
BinaryField, BooleanField, DateField, DateTimeField, DomainObjectField, FloatField, IntegerField, StringField, TextListField
Instance Attribute Summary collapse
-
#db_field_name ⇒ Object
Returns the value of attribute db_field_name.
-
#domain_class ⇒ Object
readonly
Returns the value of attribute domain_class.
-
#mock_value ⇒ Object
writeonly
Sets the attribute mock_value.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#not_nil ⇒ Object
Returns the value of attribute not_nil.
Class Method Summary collapse
-
.create_from_xml(domain_class, fieldElt) ⇒ Object
:nodoc:.
-
.create_with_args(domain_class, parameters) ⇒ Object
:nodoc:.
-
.creation_parameters(fieldElt) ⇒ Object
:nodoc:.
-
.value_type ⇒ Object
:nodoc:.
Instance Method Summary collapse
- #<=>(other) ⇒ Object
-
#bind_write? ⇒ Boolean
:nodoc:.
-
#db_column ⇒ Object
:nodoc:.
-
#db_will_automatically_write? ⇒ Boolean
:nodoc:.
-
#default_mock_value ⇒ Object
:nodoc:.
-
#initialize(domain_class, name) ⇒ ObjectField
constructor
- domain_class
-
The domain class that this field belongs to.
-
#prev_value(pk_id) ⇒ Object
:nodoc:.
-
#process_before_verify(value) ⇒ Object
:nodoc:.
-
#value_for_sql(value) ⇒ Object
Returns a string value suitable for committing this field’s value to MySQL.
-
#value_from_sql(string) ⇒ Object
Given the SQL value string, returns a Ruby-native value.
-
#verify(value, pk_id) ⇒ Object
:nodoc:.
-
#verify_non_nil_value(value, pk_id) ⇒ Object
:nodoc:.
Constructor Details
#initialize(domain_class, name) ⇒ ObjectField
- domain_class
-
The domain class that this field belongs to.
- name
-
The name of this field.
58 59 60 61 62 63 |
# File 'lib/lafcadio/objectField.rb', line 58 def initialize( domain_class, name ) @domain_class = domain_class @name = name @db_field_name = name @not_nil = true end |
Instance Attribute Details
#db_field_name ⇒ Object
Returns the value of attribute db_field_name.
54 55 56 |
# File 'lib/lafcadio/objectField.rb', line 54 def db_field_name @db_field_name end |
#domain_class ⇒ Object (readonly)
Returns the value of attribute domain_class.
53 54 55 |
# File 'lib/lafcadio/objectField.rb', line 53 def domain_class @domain_class end |
#mock_value=(value) ⇒ Object (writeonly)
Sets the attribute mock_value
317 318 319 |
# File 'lib/lafcadio/test.rb', line 317 def mock_value=(value) @mock_value = value end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
53 54 55 |
# File 'lib/lafcadio/objectField.rb', line 53 def name @name end |
#not_nil ⇒ Object
Returns the value of attribute not_nil.
54 55 56 |
# File 'lib/lafcadio/objectField.rb', line 54 def not_nil @not_nil end |
Class Method Details
.create_from_xml(domain_class, fieldElt) ⇒ Object
:nodoc:
27 28 29 30 |
# File 'lib/lafcadio/objectField.rb', line 27 def self.create_from_xml( domain_class, fieldElt ) #:nodoc: parameters = creation_parameters( fieldElt ) create_with_args( domain_class, parameters ) end |
.create_with_args(domain_class, parameters) ⇒ Object
:nodoc:
32 33 34 35 36 37 38 |
# File 'lib/lafcadio/objectField.rb', line 32 def self.create_with_args( domain_class, parameters ) #:nodoc: instance = self.new( domain_class, parameters['name'] ) if ( db_field_name = parameters['db_field_name'] ) instance.db_field_name = db_field_name end instance end |
.creation_parameters(fieldElt) ⇒ Object
:nodoc:
40 41 42 43 44 45 |
# File 'lib/lafcadio/objectField.rb', line 40 def self.creation_parameters( fieldElt ) #:nodoc: parameters = {} parameters['name'] = fieldElt.attributes['name'] parameters['db_field_name'] = fieldElt.attributes['db_field_name'] parameters end |
.value_type ⇒ Object
:nodoc:
47 48 49 |
# File 'lib/lafcadio/objectField.rb', line 47 def self.value_type #:nodoc: Object end |
Instance Method Details
#<=>(other) ⇒ Object
65 66 67 68 69 70 71 |
# File 'lib/lafcadio/objectField.rb', line 65 def <=>(other) if @domain_class == other.domain_class && name == other.name 0 else object_id <=> other.object_id end end |
#bind_write? ⇒ Boolean
:nodoc:
73 74 75 |
# File 'lib/lafcadio/objectField.rb', line 73 def bind_write? #:nodoc: false end |
#db_column ⇒ Object
:nodoc:
77 78 79 |
# File 'lib/lafcadio/objectField.rb', line 77 def db_column #:nodoc: "#{ domain_class.table_name }.#{ db_field_name }" end |
#db_will_automatically_write? ⇒ Boolean
:nodoc:
81 82 83 |
# File 'lib/lafcadio/objectField.rb', line 81 def db_will_automatically_write? #:nodoc: false end |
#default_mock_value ⇒ Object
:nodoc:
319 320 321 |
# File 'lib/lafcadio/test.rb', line 319 def default_mock_value #:nodoc: self.class.mock_value end |
#prev_value(pk_id) ⇒ Object
:nodoc:
85 86 87 88 |
# File 'lib/lafcadio/objectField.rb', line 85 def prev_value(pk_id) #:nodoc: prevObject = ObjectStore.get_object_store.get( @domain_class, pk_id ) prevObject.send(name) end |
#process_before_verify(value) ⇒ Object
:nodoc:
90 91 92 93 |
# File 'lib/lafcadio/objectField.rb', line 90 def process_before_verify(value) #:nodoc: value = @default if value == nil value end |
#value_for_sql(value) ⇒ Object
Returns a string value suitable for committing this field’s value to MySQL.
97 98 99 |
# File 'lib/lafcadio/objectField.rb', line 97 def value_for_sql(value) value || 'null' end |
#value_from_sql(string) ⇒ Object
Given the SQL value string, returns a Ruby-native value.
125 126 127 |
# File 'lib/lafcadio/objectField.rb', line 125 def value_from_sql(string) string end |
#verify(value, pk_id) ⇒ Object
:nodoc:
101 102 103 104 105 106 107 108 109 110 |
# File 'lib/lafcadio/objectField.rb', line 101 def verify(value, pk_id) #:nodoc: if value.nil? && not_nil raise( FieldValueError, "#{ self.domain_class.name }##{ name } can not be nil.", caller ) end verify_non_nil_value( value, pk_id ) if value end |
#verify_non_nil_value(value, pk_id) ⇒ Object
:nodoc:
112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/lafcadio/objectField.rb', line 112 def verify_non_nil_value( value, pk_id ) #:nodoc: value_type = self.class.value_type unless value.class <= value_type raise( FieldValueError, "#{ domain_class.name }##{ name } needs a " + value_type.name + " value.", caller ) end end |