Ich habe ein Modell Wunsch, den Balg Methode before_validation
genannt enthält:Rails 4 bis 5 AR boolean deprecation
def set_to_false
self.confirme ||= false
self.deny ||= false
self.favoris ||= false
self.code_valid ||= false
end
Wenn ich meine Tests ausführen, ich die deprecation Nachricht bekam
deprecation ACHTUNG: Sie haben versucht, einen Wert, der nicht ist, explizit
true
oderfalse
einer booleschen Spalte zuzuweisen. Momentan ist dieser Wert infalse
umgewandelt. Dies ändert sich, um der Semantik von Ruby zu entsprechen, und wird in Rails 5 in umgewandelt. Wenn Sie das aktuelle Verhalten beibehalten möchten, sollten Sie die Werte, die Sie übertragen möchten, explizit mit bisfalse
behandeln. (Von cast_value bei ./Ruby2.1.0/lib/ruby/gems/2.1.0/gems/activerecord-4.2.1/lib/active_record/type/boolean.rb:17 genannt)
Ich verstehe Ich muss casten, aber ich konnte keine einfache und schlaue Art finden, es zu tun. Jede Hilfe zum Entfernen dieser Abwertung wäre großartig.
netter Trick wird, kann nie wissen, über '!! 'foo''' true' – 7urkm3n
zurückkehren kann ich die 'Gegenwart empfehlen?' anstelle von '!!', wie es auch für leere Werte funktioniert, also "" .present? ',' [] .present? ',' {} .present? 'alle geben false zurück. –
@AnthonyE: es kommt auf den konkreten Anwendungsfall an, aber ja, danke, dass du das erwähnt hast! –