Ruby 3.2.2 で壊れた enum のリストを取得する
概要
Rails アプリを Ruby 2.7.0 から 3.2.2 に更新し、次のコードを追加しました。
class TemplateField < ApplicationRecord
enum group: {
'primary': 'primary',
'secondary': 'secondary',
'auxiliary': 'auxiliary',
'header': 'header',
'back': 'back',
'unassigned': 'unassigned'
}
end
class Template < ApplicationRecord
TemplateField.groups.each do |_key, val|
has_many "fields_#{val.pluralize}".to_sym #...
end
end
次のメッセージが表示されて中断されました。
NoMethodError:
undefined method `groups' for TemplateField:Class
基本的に、コンソールで TemplateField.groups を直接呼び出しても、同じエラーが発生します。 Ruby 2.7 と 3.2 の間で注意すべき変更点はありますか?
解決策
私の場合、それは古い sorbet-rails 依存関係が原因でした。バンドル更新シャーベット シャーベットレールを実行すると問題が解決しました。