Scope and context
Last updated
Was this helpful?
Last updated
Was this helpful?
This is the official documentation of the agent_ruby
Ruby agent.
Actions can have 3 different scopes: Single
, Bulk
, and Global
.
The scope of an action defines how it can be triggered and which records it will target.
Targeted records
One at a time
All selected and matching the current segment / search
Your choice among all matching the current segment / search
Can be triggered from the List View
When a single record is selected
When one or more records are selected
✅
Can be triggered from the Details View or Summary View
✅
✅
🚫
context
objectThe context
object is central to writing Actions controllers in Forest Admin.
There are two different object context. The first ForestAdminDatasourceCustomizer::Decorators::Action::Context::ActionContext
is used for the actions of type Bulk or Global. And the second ForestAdminDatasourceCustomizer::Decorators::Action::Context::ActionContextSingle
is only used with the actions of type Single
It is the bridge between all the data that your agent has access to and the action's execution. It is passed to the execute
function as the first argument and provides access to the following properties:
get_record(field_names)
(or get_records(field_names)
for Bulk
and Global
Actions)
get_record_id()
(or get_record_ids()
for Bulk
and Global
Actions)
collection
the collection on which the action is declared, which can be queried using the .
datasource
the composite data source who contains all your collections, which can be queried using the
filter
a filter that can be used to query the collection, and which is based on action scope and the list of selected records.
caller
an object containing information about the user who is performing the action (including email, username, timezone, team, role …)
field_changed?(field_name)
the name of the field who has changed in the UI.
We can simply use the get_record(field_names)
method to get any column from the selected record or a relation.
For simple queries, use context.collection
and context.filter
to query the collection.
Forest Admin does not impose any restriction on the handler: you are free to write the execute
handler to fit your use case.
You are free to call external APIs, query your database, or perform any work in action handlers.
Those are instances of objects from the .