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
- #key?(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.
204 205 206 |
# File 'lib/engine2/core.rb', line 204 def skip_save_refresh @skip_save_refresh end |
#validate_fields ⇒ Object
Returns the value of attribute validate_fields.
204 205 206 |
# File 'lib/engine2/core.rb', line 204 def validate_fields @validate_fields end |
Instance Method Details
#_save_refresh ⇒ Object
219 220 221 |
# File 'lib/engine2/core.rb', line 219 def _save_refresh super unless skip_save_refresh end |
#after_destroy ⇒ Object
265 266 267 268 269 270 |
# File 'lib/engine2/core.rb', line 265 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
246 247 248 249 250 251 252 253 254 255 256 |
# File 'lib/engine2/core.rb', line 246 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
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 |
# File 'lib/engine2/core.rb', line 278 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
258 259 260 261 262 263 |
# File 'lib/engine2/core.rb', line 258 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
226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 |
# File 'lib/engine2/core.rb', line 226 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
210 211 212 213 |
# File 'lib/engine2/core.rb', line 210 def has_primary_key? pk = self.pk pk.is_a?(Array) ? !pk.all?{|k|k.nil?} : !pk.nil? end |
#key?(key) ⇒ Boolean
206 207 208 |
# File 'lib/engine2/core.rb', line 206 def key? key @values.key? key end |
#primary_key_values ⇒ Object
215 216 217 |
# File 'lib/engine2/core.rb', line 215 def primary_key_values model.primary_keys.map{|k|@values[k]} end |
#validate ⇒ Object
272 273 274 275 276 |
# File 'lib/engine2/core.rb', line 272 def validate super auto_validate validation end |
#validation ⇒ Object
223 224 |
# File 'lib/engine2/core.rb', line 223 def validation end |