Skip to content

polymorphic on expects a symbol#433

Merged
jkeen merged 2 commits into
graphiti-api:masterfrom
jasonkarns:patch-1
Mar 18, 2024
Merged

polymorphic on expects a symbol#433
jkeen merged 2 commits into
graphiti-api:masterfrom
jasonkarns:patch-1

Conversation

@jasonkarns

Copy link
Copy Markdown
Contributor

Polymorphic belongs-to expects a symbol name as the "type" for a given subclass. In our case, we have had to customize Rails' polymorphic type derivation logic. So for any given AR model, we can't simply use the model's name in our polymorphic belongs-to.

To prevent duplicating (and decoupling) the knowledge of what a given model's polymorphic type name is, we're using:

  polymorphic_belongs_to :approvable do
    group_by(:approvable_type) do
      on(Address.polymorphic_name) # is actually AddressList

However! This fails to match because the grouping logic is matching against :AddressList as a symbol.

We could of course .to_sym ourselves, but I think if graphiti intends to match against a symbol it should do the conversion itself to ensure the matching value is also a symbol.

Polymorphic belongs-to expects a symbol name as the "type" for a given subclass. In our case, we have had to customize Rails' polymorphic type derivation logic. So for any given AR model, we can't simply use the model's name in our polymorphic belongs-to.

To prevent duplicating (and decoupling) the knowledge of what a given model's polymorphic type name is, we're using:

```rb
  polymorphic_belongs_to :approvable do
    group_by(:approvable_type) do
      on(Address.polymorphic_name) # is actually AddressList
```

However! This fails to match because the grouping logic is matching against `:AddressList` as a symbol.

We could of course .to_sym ourselves, but I think if graphiti intends to match against a symbol it should do the conversion itself to ensure the matching value is also a symbol.
@jkeen

jkeen commented Feb 27, 2024

Copy link
Copy Markdown
Collaborator

@jasonkarns Mind adding a test for this?

@jkeen jkeen merged commit 4e58702 into graphiti-api:master Mar 18, 2024
github-actions Bot pushed a commit that referenced this pull request Mar 18, 2024
## [1.5.1](v1.5.0...v1.5.1) (2024-03-18)

### Bug Fixes

* polymorphic `on` expects a symbol ([#433](#433)) ([4e58702](4e58702))
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.5.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

jkeen pushed a commit to jkeen/graphiti that referenced this pull request Mar 27, 2024
Fix polymorphic type mismatch in polymorphic_belongs_to by ensuring symbol conversion
jkeen pushed a commit to jkeen/graphiti that referenced this pull request Mar 27, 2024
## [1.5.1](graphiti-api/graphiti@v1.5.0...v1.5.1) (2024-03-18)

### Bug Fixes

* polymorphic `on` expects a symbol ([graphiti-api#433](graphiti-api#433)) ([4e58702](graphiti-api@4e58702))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants