-
Notifications
You must be signed in to change notification settings - Fork 128
Description
When creating a new ActiveRecord model through an association, for example:
class Post < ActiveRecord::Base
has_many comments
end
class Comment < ActiveRecord::Base
belongs_to :post
end
post = Post.new
comment = post.comments.newthe current type definitions throw an error when validating in Steep due to an incorrect signature:
[error] The method cannot be called without a block
│ Diagnostic ID: Ruby::RequiredBlockMissing
│
└ @comment = post.comments.new
~~~This specific one comes from ActiveRecord::Associations::CollectionProxy#new(build), which is defined on https://github.com/ruby/gem_rbs_collection/blob/main/gems/activerecord/6.0/activerecord-generated.rbs#L1156-L1158
def build: (?::Hash[untyped, untyped] attributes) { () -> untyped } -> untyped
alias new buildThe patch to fix it is to make the block optional, ie ?{ () -> untyped }
There is another method definition under ActiveRecord::AssociationRelation that likely also needs to be updated: https://github.com/ruby/gem_rbs_collection/blob/main/gems/activerecord/6.0/activerecord-generated.rbs#L259-L261
I'm happy to make a PR to address, but not sure if you would prefer to update the generated files or the patch.