Please be sure of your agent type and version and pick the right documentation accordingly.
This is the documentation of the forest-express-sequelize and forest-express-mongoose Node.js agents that will soon reach end-of-support.
forest-express-sequelize v9 and forest-express-mongoose v9 are replaced by v1.
Please check your agent type and version and read on or switch to the right documentation.
This is still the latest Ruby on Rails documentation of the forest_liana agent, you’re at the right place, please read on.
This is the documentation of the django-forestadmin Django agent that will soon reach end-of-support.
If you’re using a Django agent, notice that django-forestadmin v1 is replaced by v1.
If you’re using a Flask agent, go to the v1 documentation.
Please check your agent type and version and read on or switch to the right documentation.
This is the documentation of the forestadmin/laravel-forestadmin Laravel agent that will soon reach end-of-support.
If you’re using a Laravel agent, notice that forestadmin/laravel-forestadmin v1 is replaced by v3.
If you’re using a Symfony agent, go to the v1 documentation.
Please check your agent type and version and read on or switch to the right documentation.
Create a record with a multiselect through a many-to-many relationship
Context: In this case, a card has many expense categories through a many to many relationships, using a join table (card expense categories). We want to be able to create a card, selecting the categories, and creating the card expense categories at the same time.
Implementation:
We will use a form with a hook to retrieve the categories as values for the multi select.
Then we implement the creation of cards and expenseCategories in the form.
Rails.application.routes.draw do
...
namespace :forest do
post '/actions/create-card' => 'cards#create_card'
end
mount ForestLiana::Engine => '/forest'
end
controllers/forest/cards_controller.rb
class Forest::CardsController < ForestLiana::SmartActionsController
def create_card
attrs = params.dig('data', 'attributes', 'values')
categories_attrs = attrs['categories'];
attrs = { name: attrs['name'], user_id: attrs['user'], company_id: attrs['company'], vendor_id: attrs['vendor'] };
card = Card.create(attrs)
categories_attrs.each do|category|
expense_category = ExpenseCategory.find_by(title: category)
card_expense_category = CardExpenseCategory.create(card_id: card.id, expense_category_id: expense_category.id)
end
render json: { success: 'Your card has been created.' }
end
end