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
DELETEquery. - #persisted? : Bool
- #reload : self
-
#save(on_conflict : Clear::SQL::InsertQuery -> | Nil = nil)
Save the model.
- #save(&block)
-
#save!(on_conflict : Clear::SQL::InsertQuery -> | Nil = nil)
Performs
#savecall, but instead of returningfalseif validation failed, raiseClear::Model::InvalidErrorexception -
#save!(&block : Clear::SQL::InsertQuery -> )
Pass the
on_conflictoptional parameter via block. -
#update(**args)
Set the fields passed as argument and call
#saveon 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 protected]"
u.save(-> (qry) { qry.on_conflict.do_update { |u| u.set(email: "[email protected]") } #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 protected]"
u.save do |qry|
qry.on_conflict.do_update { |u| u.set(email: "[email protected]")
end
Performs #save call, but instead of returning false if validation failed,
raise Clear::Model::InvalidError exception
Pass the on_conflict optional parameter via block.