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