`has_secure_password` reset token finders are missing from DSL RBIs
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 68/100
Línea de trabajo
Start by reading the ActiveModelSecurePassword DSL compiler and the code that defines the reset token finders with class_eval; the issue says the compiler currently reads InstanceMethodsOnActivation. Run bin/tapioca dsl User with the reproduction model and inspect the generated RBI. Done when both finder methods appear with the documented return types and the generated RBI tests cover them.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
Since Rails 8.0, has_secure_password on an Active Record model also defines two class methods for the reset token:
find_by_<attribute>_reset_token(token)find_by_<attribute>_reset_token!(token)
The ActiveModelSecurePassword DSL compiler generates the instance method <attribute>_reset_token, but not these finders. They are defined with class_eval directly on the model, outside the InstanceMethodsOnActivation module the compiler reads.
Reproduction
class User < ActiveRecord::Base
has_secure_password
end
Run bin/tapioca dsl User. The generated RBI contains password_reset_token, but no find_by_password_reset_token or find_by_password_reset_token!.
Calling the documented API then fails type checking:
User.find_by_password_reset_token(params[:token])
# Method `find_by_password_reset_token` does not exist on `T.class_of(User)`
Expected
The generated RBI includes:
class << self
sig { params(token: String).returns(T.nilable(User)) }
def find_by_password_reset_token(token); end
sig { params(token: String).returns(User) }
def find_by_password_reset_token!(token); end
end
- Lenguaje dominante
- Ruby
- Estrellas
- 874
- Forks
- 170
- Merge medio
- 22 h 54 min
- PR fusionados (30 d)
- 8
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Shopify/tapioca
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Shopify/tapioca#2662 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Option to omit private methods from gem RBIs, with a per-gem opt-inPosiblemente ocupada @efegokdemir la tomó hace 17 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
Los mantenedores suelen responder en 1 día
-
Constants defined under a payload alias (YAML = Psych) are emitted under the alias name, rejected by sorbet >= 0.6.13550Posiblemente ocupada @efegokdemir la tomó hace 3 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 57/100
Los mantenedores suelen responder en 1 día
-
Improve `check-shims` performancePosiblemente ocupada @KaanOzkan la tomó hace 31 días. Abierto
Shopify/tapioca#2728 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
Los mantenedores suelen responder en 1 día
Todos los issues de Shopify/tapioca
Issues similares
-
account: profile
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 5 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
bug good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
ysb3996-blip/oops#24 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día