Tapioca 没有为 Rails 模型生成正确的 RBI 文件
Tapioca not generating correct RBI file for Rails model
我正在将生成 RBI 文件的方式从 Sorbet 迁移到 Tapioca。但是,我的 Rails 模型的许多 RBI 文件中反复出现问题。在尝试为 has_many
关系生成签名时,RBI 文件似乎出错了。
(注意 - 生成警告的是 RBI 文件本身,而不是模型)
在 user.rbi
文件中,user.plans
has_many 关联的签名是:
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
不幸的是,这是目前木薯粉的粗糙边缘之一。由于 AR 关联代码是从 Shopify Core 中提取出来的,它最终继承了 CollectionProxy
的那个奇怪的通用类型,而没有关联的 RBI 文件来实际定义通用类型。
正如我们所说,我们正在解决此问题,但与此同时,请查看此解决方法:https://github.com/Shopify/tapioca/issues/179#issuecomment-738948320
我正在将生成 RBI 文件的方式从 Sorbet 迁移到 Tapioca。但是,我的 Rails 模型的许多 RBI 文件中反复出现问题。在尝试为 has_many
关系生成签名时,RBI 文件似乎出错了。
(注意 - 生成警告的是 RBI 文件本身,而不是模型)
在 user.rbi
文件中,user.plans
has_many 关联的签名是:
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
不幸的是,这是目前木薯粉的粗糙边缘之一。由于 AR 关联代码是从 Shopify Core 中提取出来的,它最终继承了 CollectionProxy
的那个奇怪的通用类型,而没有关联的 RBI 文件来实际定义通用类型。
正如我们所说,我们正在解决此问题,但与此同时,请查看此解决方法:https://github.com/Shopify/tapioca/issues/179#issuecomment-738948320