Module: E2Model::InstanceMethods
- Defined in:
- lib/engine2/core.rb
Instance Attribute Summary collapse
-
#skip_save_refresh ⇒ Object
Returns the value of attribute skip_save_refresh.
-
#validate_fields ⇒ Object
Returns the value of attribute validate_fields.
Instance Method Summary collapse
- #_save_refresh ⇒ Object
- #after_destroy ⇒ Object
- #after_save ⇒ Object
- #auto_validate ⇒ Object
- #before_destroy ⇒ Object
- #before_save ⇒ Object
- #has_primary_key? ⇒ Boolean
- #primary_key_values ⇒ Object
- #validate ⇒ Object
- #validation ⇒ Object
Instance Attribute Details
#skip_save_refresh ⇒ Object
Returns the value of attribute skip_save_refresh.
200 201 202 |
# File 'lib/engine2/core.rb', line 200 def skip_save_refresh @skip_save_refresh end |
#validate_fields ⇒ Object
Returns the value of attribute validate_fields.
200 201 202 |
# File 'lib/engine2/core.rb', line 200 def validate_fields @validate_fields end |
Instance Method Details
#_save_refresh ⇒ Object
211 212 213 |
# File 'lib/engine2/core.rb', line 211 def _save_refresh super unless skip_save_refresh end |
#after_destroy ⇒ Object
257 258 259 260 261 262 |
# File 'lib/engine2/core.rb', line 257 def after_destroy model.after_destroy_processors.each_pair do |name, proc| proc.(self, name, model.type_info.fetch(name)) end if model.after_destroy_processors super end |
#after_save ⇒ Object
238 239 240 241 242 243 244 245 246 247 248 |
# File 'lib/engine2/core.rb', line 238 def after_save unless model.dummies.empty? @values.merge!(@dummy_fields) @dummy_fields = nil end model.after_save_processors.each_pair do |name, proc| proc.(self, name, model.type_info.fetch(name)) end if model.after_save_processors super end |
#auto_validate ⇒ Object
270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 |
# File 'lib/engine2/core.rb', line 270 def auto_validate type_info = model.type_info @validate_fields.each do |name| # || type_info.keys info = type_info[name] next if info[:primary_key] && !model.natural_key value = values[name].to_s value.strip! unless info[:dont_strip] if value.empty? if req = info[:required] errors.add(name, req[:message]) if !req[:if] || req[:if].(self) end else info[:validations].each_pair do |validation, args| validation_proc = Engine2::Validations[validation] || args[:lambda] # swap ? raise E2Error.new("Validation not found for field '#{name}' of type #{validation}") unless validation_proc if result = validation_proc.(self, name, info) errors.add(name, result) break end end end end # if errors.empty? && model.natural_key && new? # unless model.dataset.where(model.primary_keys_hash(primary_key_values)).empty? # optimize the keys part # model.primary_keys.each{|pk| errors.add(pk, "must be unique")} # end # end end |
#before_destroy ⇒ Object
250 251 252 253 254 255 |
# File 'lib/engine2/core.rb', line 250 def before_destroy model.before_destroy_processors.each_pair do |name, proc| proc.(self, name, model.type_info.fetch(name)) end if model.before_destroy_processors super end |
#before_save ⇒ Object
218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
# File 'lib/engine2/core.rb', line 218 def before_save super model.before_save_processors.each_pair do |name, proc| proc.(self, name, model.type_info.fetch(name)) end if model.before_save_processors unless model.dummies.empty? dummies = {} model.dummies.each do |d| dummies[d] = values.delete(d) end @dummy_fields = dummies end unless self.pk sequence = model.type_info[model.primary_key][:sequence] self[model.primary_key] = sequence.lit if sequence end end |
#has_primary_key? ⇒ Boolean
202 203 204 205 |
# File 'lib/engine2/core.rb', line 202 def has_primary_key? pk = self.pk pk.is_a?(Array) ? !pk.all?{|k|k.nil?} : !pk.nil? end |
#primary_key_values ⇒ Object
207 208 209 |
# File 'lib/engine2/core.rb', line 207 def primary_key_values model.primary_keys.map{|k|@values[k]} end |
#validate ⇒ Object
264 265 266 267 268 |
# File 'lib/engine2/core.rb', line 264 def validate super auto_validate validation end |
#validation ⇒ Object
215 216 |
# File 'lib/engine2/core.rb', line 215 def validation end |