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.
154 155 156 |
# File 'lib/engine2/core.rb', line 154 def skip_save_refresh @skip_save_refresh end |
#validate_fields ⇒ Object
Returns the value of attribute validate_fields.
154 155 156 |
# File 'lib/engine2/core.rb', line 154 def validate_fields @validate_fields end |
Instance Method Details
#_save_refresh ⇒ Object
165 166 167 |
# File 'lib/engine2/core.rb', line 165 def _save_refresh super unless skip_save_refresh end |
#after_destroy ⇒ Object
211 212 213 214 215 216 |
# File 'lib/engine2/core.rb', line 211 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
192 193 194 195 196 197 198 199 200 201 202 |
# File 'lib/engine2/core.rb', line 192 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
224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 |
# File 'lib/engine2/core.rb', line 224 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 "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
204 205 206 207 208 209 |
# File 'lib/engine2/core.rb', line 204 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
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
# File 'lib/engine2/core.rb', line 172 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
156 157 158 159 |
# File 'lib/engine2/core.rb', line 156 def has_primary_key? pk = self.pk pk.is_a?(Array) ? !pk.all?{|k|k.nil?} : !pk.nil? end |
#primary_key_values ⇒ Object
161 162 163 |
# File 'lib/engine2/core.rb', line 161 def primary_key_values model.primary_keys.map{|k|@values[k]} end |
#validate ⇒ Object
218 219 220 221 222 |
# File 'lib/engine2/core.rb', line 218 def validate super auto_validate validation end |
#validation ⇒ Object
169 170 |
# File 'lib/engine2/core.rb', line 169 def validation end |