我有一个 PORO 用作值对象。我正在通过include ActiveModel::Model
为我带来的所有细节添加 ActiveModel。问题是我无法弄清楚如何为它生成 RBI 文件以便它通过srb tc
我目前正在使用sorbet-rails
并且因为这是一个 PORO 并且不继承自ActiveRecord
,bundle exec rails_rbi:all
或者bundle exec rails_rbi:models
即使我将它放在模型目录中(它不应该存在)也不会为此生成 .rbi 文件。
我可以手动编写 .rbi 文件,但我真的不想这样做。有没有办法可以自动生成它们?
这是我需要 RBI 文件的模块的简化示例
module MyModule
class MyClass
include ActiveModel::Model
extend T::Sig
VALID_VARIANTS = T.let(['Enum1', 'Enum2'], T::Array[String])
sig { returns(String) }
attr_accessor :variant
validates :variant, presence: true, inclusion: { in: VALID_VARIANTS }
validate :enum_1_is_valid, if: Proc.new { |a| a.variant == 'Enum1' }
private
sig { void }
def enum_1_is_valid
# ...
end
end
end