Triggers
Clear provides a way to create triggers on different time of the lifecycle of the model.
Example usage
class User
include Clear::Model
column first_name : String
column last_name : String
def full_name
{first_name, last_name}.join(" ")
end
after :create, :send_email
before(:update) { |m| m.as(User).updated_at = Time.local }
def send_email
EmailManager.send_email(subject: "welcome #{full_name} !", body: "...")
end
end
Caveats
Calling before/after with a block will return a Clear::Model as argument. Therefore, you must cast the variable (
m.as(User)
in example above).before/after :action, :method
must be pointing to public method. If the method is private, the call will fail.
Trigger list
Trigger symbol
Description
:validate
Is triggered before and after calling valid?
method
:save
Is triggered before and after calling save
method
:delete
Is triggered before and after destroying a model
:create
Is triggered before and after calling save
method, if the model is not yet persisted and save execute INSERT request.
:update
Is triggered before and after calling save
method, if the model is already existing and save execute UPDATE request.
:creation_commited
Note: PLANNED FEATURE NOT YET IMPLEMENTED. Is triggered when a transaction is commited, for each model which has been created during the lifetime of a transaction
:update_commited
Note: PLANNED FEATURE NOT YET IMPLEMENTED. Is triggered when a transaction is commited, for each model which has been updated during the lifetime of a transaction
:delete_commited
Note: PLANNED FEATURE NOT YET IMPLEMENTED. Is triggered when a transaction is commited, for each model which has been destroyed during the lifetime of a transaction
Last updated