Sha256: f08d50b4aafaf7dc9fb8e9ef9d533755f65e5119c14a97dc4e2a6b6bf3f8e492

Contents?: true

Size: 1.07 KB

Versions: 6

Compression:

Stored size: 1.07 KB

Contents

---
title: Scoping HasMany Relations
---

To show a subset of a has_many relationship, create a new [has_many](https://apidock.com/rails/ActiveRecord/Associations/ClassMethods/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.

```ruby
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`. Notice the new field needs to specifiy the class name as an option like you did in the model.

```ruby
ATTRIBUTE_TYPES = {
  orders: Field::HasMany,
  processed_orders: Field::HasMany.with_options(class_name: 'Order')
```

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
administrate-1.0.0.beta2 docs/guides/scoping_has_many_relations.md
administrate-1.0.0.beta1 docs/guides/scoping_has_many_relations.md
administrate-0.20.1 docs/guides/scoping_has_many_relations.md
administrate-0.20.0 docs/guides/scoping_has_many_relations.md
administrate-0.19.0 docs/guides/scoping_has_many_relations.md
administrate-0.18.0 docs/guides/scoping_has_many_relations.md