module Clear::Model::HasSaving
Direct including types
Defined in:
clear/model/modules/has_saving.crInstance Method Summary
-
#delete
Delete the model by building and executing a
DELETE
query. - #persisted? : Bool
- #reload : self
-
#save(on_conflict : Clear::SQL::InsertQuery -> ? = nil)
Save the model.
- #save(&block)
-
#save!(on_conflict : Clear::SQL::InsertQuery -> ? = nil)
Performs
#save
call, but instead of returningfalse
if validation failed, raiseClear::Model::InvalidModelError
exception -
#save!(&block : Clear::SQL::InsertQuery -> )
Pass the
on_conflict
optional parameter via block. -
#update(**args)
Set the fields passed as argument and call
#save
on the object -
#update!(**args)
Set the fields passed as argument and call
#save!
on the object
Instance Method Detail
Delete the model by building and executing a DELETE
query.
A deleted model is not persisted anymore, and can be saved again.
Clear will do `INSERT` instead of `UPDATE` then
Return true
if the model has been successfully deleted, and false
otherwise.
Save the model. If the model is already persisted, will call UPDATE
query.
If the model is not persisted, will call INSERT
Optionally, you can pass a Proc
to refine the INSERT
with on conflict
resolution functions.
Return false
if the model cannot be saved (validation issue)
Return true
if the model has been correctly saved.
Example:
u = User.new
if u.save
puts "User correctly saved !"
else
puts "There was a problem during save: "
# do something with `u.errors`
end
on_conflict
optional parameter
Example:
u = User.new id: 123, email: "email@example.com"
u.save(-> (qry) { qry.on_conflict.do_update{ |u| u.set(email: "email@example.com") } #update
# IMPORTANT NOTICE: user may not be saved, but will be still detected as persisted !
You may want to use a block for on_conflict
optional parameter:
u = User.new id: 123, email: "email@example.com"
u.save do |qry|
qry.on_conflict.do_update{ |u| u.set(email: "email@example.com")
end
Performs #save
call, but instead of returning false
if validation failed,
raise Clear::Model::InvalidModelError
exception
Pass the on_conflict
optional parameter via block.