65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/property/properties.rb', line 65
def validate
column_names = columns.keys
errors = @owner.errors
no_errors = true
original_hash = @original_hash || self
bad_keys = keys - column_names
missing_keys = column_names - keys
keys_to_validate = keys - bad_keys
bad_keys.each do |key|
if original_hash[key] == self[key]
elsif self[key].blank?
self.delete(key)
else
errors.add(key, Property::AttributeError.new(@owner, key, nil, :message => 'property not declared', :value => self[key]))
end
end
missing_keys.each do |key|
column = columns[key]
if column.has_default?
self[key] = column.default_for(@owner)
end
end
keys_to_validate.each do |key|
columns[key].validate(self[key], errors)
end
bad_keys.empty?
end
|