Scoping HasMany Relations

To show a subset of a has_many relationship, create a new has_many relationship in your model (using the scope argument) and add it to the model's dashboard.

Creating a scoped has_many relationship

Models can define subsets of a has_many relationship by passing a callable (i.e. proc or lambda) as its second argument.

class Customer < ApplicationRecord
   has_many :orders
   has_many :processed_orders, ->{ where(processed: true) }, class_name: "Order"

Since ActiveRecord infers the class name from the first argument, the new has_many relation needs to specify the model using the class_name option.

Add new relationship to dashboard

Your new scoped relation can be used in the dashboard just like the original HasMany.

ATTRIBUTE_TYPES = {
  orders: Field::HasMany,
  processed_orders: Field::HasMany