Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

polymorphic on expects a symbol #433

Merged
merged 2 commits into from
Mar 18, 2024
Merged

Conversation

jasonkarns
Copy link
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
Copy link
Collaborator

jkeen commented Feb 27, 2024

@jasonkarns Mind adding a test for this?

@jkeen jkeen merged commit 4e58702 into graphiti-api:master Mar 18, 2024
35 checks passed
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))
Copy link

🎉 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.

None yet

2 participants