我正在将生成 RBI 文件的方式从 Sorbet 迁移到 Tapioca。但是,我在我的 Rails 模型的许多 RBI 文件中遇到了一个反复出现的问题。尝试为关系生成签名时,RBI 文件似乎出错了has_many
。
(注意 - 它是 RBI 文件本身而不是生成警告的模型)
在文件中, has_many 关联user.rbi
的签名是:user.plans
sig { returns(::ActiveRecord::Associations::CollectionProxy[Plan]) }
def plans; end
当我运行时,srb tc
我看到以下错误:
sorbet/rbi/dsl/user.rbi:110: Method [] does not exist on T.class_of(ActiveRecord::Associations::CollectionProxy) https://srb.help/7003
110 | sig { returns(::ActiveRecord::Associations::CollectionProxy[Plan]) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Got T.class_of(ActiveRecord::Associations::CollectionProxy) originating from:
sorbet/rbi/dsl/user.rbi:110:
110 | sig { returns(::ActiveRecord::Associations::CollectionProxy[Plan]) }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Did you mean:
sorbet/rbi/gems/activerecord@6.1.4.1.rbi:3238: ActiveRecord::Delegation#[]
3238 | def [](*args, &block); end