[RUBY] [Durchsuchen] Achten Sie auf ransackable_scopes!

Fazit

Wenn das von ransackable_scopes an scope übergebene Argument den folgenden Wert hat ArgumentError wrong number of arguments (given 0, expected 1) Seien Sie vorsichtig, da es passieren wird! !! !!

Diese Werte werden ** implizit ** in True bzw. False konvertiert ** und können nicht als Argumente übergeben werden.

Lösung

config/initializers/ransack.rb


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

Fügen Sie dies einfach hinzu und Sie können alle oben genannten Werte übergeben **. [^ 1]

Wenn Sie die Werte anpassen möchten, können Sie übergeben

** Bitte gib auf. ** ** ** Der implizit konvertierte Wert lautet Ransack :: Constants :: BOOLEAN_VALUES Definiert in [^ 2]. Diese Konstante ist "Einfrieren". Nach Angaben des Beamten gibt es keine Möglichkeit, ein "Einfrieren" -Objekt ** einzufrieren **. [^ 3]

There is no way to unfreeze a frozen object.

Ich habe viel recherchiert, um die zu konvertierenden Werte anzupassen, konnte es aber nicht. .. .. Vorerst wurde PR des Inhalts "Ich habe es möglich gemacht, den Wert anzupassen, der implizit konvertiert werden soll!" zusammengeführt. .. Demnach können Sie den zu konvertierenden Wert wie folgt anpassen.

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

** Der folgende Fehler ist jedoch aufgetreten, auch wenn ich ihn so geschrieben habe, wie er war. ** ** **

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

**Was! ?? !! ?? !! ?? !! ?? !! ?? !! ?? !! ?? !! ?? !! ?? !! ?? !! ?? !! ?? ** ** ** Ich habe [Inhalte der PR-Implementierung] überprüft (https://github.com/activerecord-hackery/ransack/pull/742/files), aber die in der Übersicht beschriebenen Inhalte wurden nicht implementiert. .. .. .. Bitte lassen Sie mich wissen, wenn jemand hier weiß. .. ..

Außerdem hat @t_oginogin eine Lösung vorgeschlagen, die Ransack nicht verwendet. Bitte beziehen Sie sich entsprechend Ihrem Implementierungsstatus darauf. https://qiita.com/t_oginogin/items/b45636d64c271ebc409c

Verweise

[^ 1]: Über sanitize_custom_scope_booleans (Ransack-Beamter) https://github.com/activerecord-hackery/ransack#using-scopesclass-methods

[^ 2]: Inhalt von BOOLEAN_VALUES (Durchsuchungsbeamter) https://github.com/activerecord-hackery/ransack/blob/c9cc20de9e0f7bab92e0579c85bed64d614d23de/lib/ransack/constants.rb#L26

[^ 3]: Auftauen nicht möglich (Ruby-Beamter) https://ruby-doc.org/core-2.6.6/Object.html#method-i-freeze

Recommended Posts

[Durchsuchen] Achten Sie auf ransackable_scopes!
Achten Sie auf eingebettete Variablen in S2Dao
Punkte, die bei Java beachtet werden müssen, sind gleich
Dinge, auf die Sie beim Erstellen eines Frameworks achten sollten
Dinge, auf die Sie bei der zukünftigen Java-Entwicklung achten sollten
Dinge, auf die Sie bei der Verwendung von Kmeans in Deeplearning4j achten sollten
Informieren Sie sich über annotationProcessor für Gradle 5.0