Documents
How split transaction child exclusion was implemented
How split transaction child exclusion was implemented
Type
Answer
Status
Published
Created
Apr 21, 2026
Updated
May 9, 2026
Created by
Dosu Bot
Updated by
Dosu Bot

Individual parts of a split transaction can now be excluded from analytics. This functionality was implemented in PR #1661.

Implementation#

The feature required three key changes, all of which have been completed:

  1. View restriction removed — The exclusion toggle was previously hidden for both split parents and split children. The conditional has been updated to allow the toggle for split children while still hiding it for split parents:

    <% unless @entry.split_parent? %>
      <%= f.toggle :excluded, { data: { auto_submit_form_target: "auto" } } %>
    <% end %>
    
  2. Controller parameter permitted — The SplitsController now permits the excluded field in strong parameters, allowing it to be passed through during split creation and updates:

    def split_params
      params.require(:split).permit(splits: [ :name, :amount, :category_id, :excluded ])
    end
    
  3. Model support added — The Entry#split! method now accepts and handles the excluded key, properly casting truthy string values ("true", "1") to boolean:

    excluded: TRUTHY_VALUES.include?(split_attrs[:excluded])
    

How It Works#

  • The database already supported exclusion per split child, as each split child is a real Entry record with its own excluded boolean flag.
  • Analytics queries filter on ae.excluded = false, so excluded split children are automatically removed from balance calculations.
  • Users can toggle exclusion on individual split children via the transaction detail drawer.

User Flow#

The exclusion toggle is available in the transaction detail drawer after a split has been created. The split creation/editing modal does not include exclusion controls — users create the split first, then open any child transaction to toggle exclusion in the settings panel.

How split transaction child exclusion was implemented | Dosu