[RUBY] [Ransack] Attention aux ransackable_scopes!

Conclusion

Si l'argument passé à scope exécuté par ransackable_scopes est la valeur suivante ArgumentError wrong number of arguments (given 0, expected 1) Soyez prudent car cela se produira! !! !!

Ces valeurs sont ** implicitement converties ** en True et False, respectivement, et ne peuvent pas être passées comme arguments.

Solution

config/initializers/ransack.rb


Ransack.configure do |config|
  config.sanitize_custom_scope_booleans = false
end

Ajoutez simplement ceci et vous pourrez passer toutes les valeurs ci-dessus **. [^ 1]

Si vous souhaitez personnaliser les valeurs que vous pouvez transmettre

** Veuillez abandonner. ** ** La valeur implicitement convertie est Ransack :: Constants :: BOOLEAN_VALUES Défini dans [^ 2]. Cette constante est «gel». Selon le fonctionnaire, il n'y a aucun moyen de ** dégeler ** un objet freeze. [^ 3]

There is no way to unfreeze a frozen object.

J'ai fait beaucoup de recherches sur la personnalisation des valeurs à convertir, mais je n'ai pas pu. .. .. Pour le moment, PR du contenu "J'ai rendu possible la personnalisation de la valeur à convertir implicitement!" a été fusionné. .. Selon cela, il semble que vous puissiez personnaliser la valeur à convertir comme suit.

Ransack.configure do |config|
   config.truthy_values_to_convert_in_custom_scopes = ['TRUE', 'true', '1']
   config.falsey_values_to_convert_in_custom_scopes = ['FALSE', 'no way no how']
end

** Cependant, l'erreur suivante s'est produite même si je l'ai écrite telle quelle. ** **

=> NoMethodError: undefined method `truthy_values_to_convert_in_custom_scopes' for Ransack:Module

**Quoi! ?? !! ?? !! ?? !! ?? !! ?? !! ?? !! ?? !! ?? !! ?? !! ?? !! ?? !! ?? ** ** J'ai vérifié contenu de l'implémentation PR, mais le contenu tel que décrit dans l'aperçu n'a pas été implémenté. .. .. .. S'il vous plaît laissez-moi savoir si quelqu'un sait ici. .. ..

De plus, @t_oginogin a suggéré une solution qui n'utilise pas Ransack, veuillez donc vous y référer en fonction de l'état de votre implémentation. https://qiita.com/t_oginogin/items/b45636d64c271ebc409c

Les références

[^ 1]: À propos de sanitize_custom_scope_booleans (officiel de Ransack) https://github.com/activerecord-hackery/ransack#using-scopesclass-methods

[^ 2]: Contenu de BOOLEAN_VALUES (Ransack officiel) https://github.com/activerecord-hackery/ransack/blob/c9cc20de9e0f7bab92e0579c85bed64d614d23de/lib/ransack/constants.rb#L26

[^ 3]: Libération impossible (Ruby officiel) https://ruby-doc.org/core-2.6.6/Object.html#method-i-freeze

Recommended Posts

[Ransack] Attention aux ransackable_scopes!
Attention aux variables embarquées dans S2Dao
Points à connaître avec Java Equals
Points à surveiller lors de la création d'un framework
Points à surveiller dans le développement futur de Java
Choses à surveiller lors de l'utilisation de Kmeans dans Deeplearning4j
En savoir plus sur annotationProcessor for Gradle 5.0