granite icon indicating copy to clipboard operation
granite copied to clipboard

stack overflow when accidentally using Enum without `.to_i` in where

Open confact opened this issue 4 years ago • 1 comments

When doing normal where and use the Enum in the where as you might assume it should work. It throws a stack overflow. if I do .to_i it works.

I would assume to catch this error with an exception so a stack overflow doesn't happen if it is not supported.

User.where(role: Role::Admin).select.first

will return stack overflow, while:

User.where(role: Role::Admin.to_i).select.first

will work

I use the Enum converter in the model like this:

  column role : Role = Role::Guest, converter: Granite::Converters::Enum(Role, Int32)

confact avatar May 28 '21 07:05 confact

I bet this is because it's not casting the Enum when it's in the where method params, but it is converted in the model itself when saving/fetching.

crimson-knight avatar Apr 25 '23 11:04 crimson-knight