# File lib/engine2/core.rb, line 225 def primary_key_values model.primary_keys.map{|k|@values[k]} end
module E2Model::InstanceMethods
Attributes
skip_save_refresh[RW]
validate_fields[RW]
Public Instance Methods
_save_refresh()
click to toggle source
Calls superclass method
# File lib/engine2/core.rb, line 229 def _save_refresh super unless skip_save_refresh end
after_destroy()
click to toggle source
Calls superclass method
# File lib/engine2/core.rb, line 275 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()
click to toggle source
Calls superclass method
# File lib/engine2/core.rb, line 256 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()
click to toggle source
# File lib/engine2/core.rb, line 288 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 value.frozen? || 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()
click to toggle source
Calls superclass method
# File lib/engine2/core.rb, line 268 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()
click to toggle source
Calls superclass method
# File lib/engine2/core.rb, line 236 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?()
click to toggle source
# File lib/engine2/core.rb, line 220 def has_primary_key? pk = self.pk pk.is_a?(Array) ? !pk.all?{|k|k.nil?} : !pk.nil? end
key?(key)
click to toggle source
# File lib/engine2/core.rb, line 216 def key? key @values.key? key end
primary_key_values()
click to toggle source
validate()
click to toggle source
Calls superclass method
# File lib/engine2/core.rb, line 282 def validate super auto_validate validation end
validation()
click to toggle source
# File lib/engine2/core.rb, line 233 def validation end