sorbet-rails icon indicating copy to clipboard operation
sorbet-rails copied to clipboard

Model with `enum` raises `ArgumentError: wrong number of arguments (given 3, expected 1)`

Open rspeicher opened this issue 1 year ago • 0 comments

Describe the bug:

I'm attempting to generate RBIs for the following model:

class TeamMember < ApplicationRecord
  ROLES = {
    unassigned: "unassigned",
    contractor: "contractor",
    employee: "employee"
  }.freeze

  enum :role, ROLES, default: :unassigned, suffix: true
end

But the following error gets raised:

main % be rails 'rails_rbi:models'
rails aborted!
ArgumentError: wrong number of arguments (given 3, expected 1)
/Users/rspeicher/.../app/models/team_member.rb:26:in `<class:TeamMember>'
/Users/rspeicher/.../app/models/team_member.rb:1:in `<main>'
Tasks: TOP => rails_rbi:models
(See full trace by running task with --trace)

The same error gets raised with a reduced enum like so:

enum :role, %i[foo bar]

Steps to reproduce:

  • Generate a model with an enum field
  • Run the rails_rbi:models task

Expected behavior:

RBIs for models are generated.

Versions:

  • Ruby: ruby 3.2.1 (2023-02-08 revision 31819e82c8) [arm64-darwin22]
  • Rails: Rails 7.0.4.3
  • Sorbet: Sorbet typechecker 0.5.10712 git dd4602e030832c930d0b413f31734a83708448f6 debug_symbols=true clean=1
  • Sorbet-Rails: sorbet-rails-0.7.34

This may be related to https://github.com/chanzuckerberg/sorbet-rails/issues/479

rspeicher avatar Mar 21 '23 15:03 rspeicher