Ich habe das Carrierwave-Juwel für Image-Uploads installiert. Ich muss mount_uploader :value, CheckItemValueImageUploader
auf values
mit der value_type
gleich 3
anwenden. Hier ist, was ich versucht habe.Schienen - Wie kann ich eine if-Anweisung im Modell haben?
Der folgende Code wirft keine Fehler, es scheint auch keinen Unterschied zu machen, als ob die if-Anweisung es nicht gibt.
mount_uploader :value, CheckItemValueImageUploader, if: 'value_type == 3'
habe ich versucht, den Code unter dem für die Nichtbildtypen (alles mit einem value_type
anderen als 3) arbeitet, sondern speichert die Bilder als #<ActionDispatch::Http::UploadedFile:0x007fe74b2e2e28>
statt image-name.png
if :value_type == 3
mount_uploader :value, CheckItemValueImageUploader
else
end
Und ich habe auch versucht, diese, die auch wird wie der erste Versuch ignoriert, so als ob die if-Bedingung nicht einmal angewendet wird
von selbst ohne, wenn stat ement mount_uploader :value, CheckItemValueImageUploader
speichert Bilder in Ordnung aber jeder andere Werttyp speichert nicht (z. B. Text), die if-Anweisung sollte dies beheben. Ich weiß nicht, warum die zweite Option nicht funktioniert, aber ich bin sicher, es ist ein zufälliger Grund, der außerhalb meines Wissensbereichs auf Schienen liegt. Ich hoffe wirklich, dass hier jemand eine funktionierende Lösung hat.
Ich habe versucht, Hinzufügen von ', wenn: proc {| o | o.value_type == 3} 'aber es hat nichts gemacht (wie der erste und dritte Versuch, den ich hatte). Ich brauche es, weil ich 'Items' habe, die Werte haben, diese Werte können variieren, je nachdem, welche Informationen sie haben, wie lange Textblöcke, ein oder zwei Wörter, Links usw. (' value_type' hält, welche Art von Wert es ist) Ich füge die Fähigkeit hinzu, dass Bilder für einen Gegenstand als Wert hochgeladen werden können. Wenn ich eine ganz neue Spalte nur dafür mache, würde dies eine Menge von Kerncodierungsänderungen verursachen, so dass ich sehe, ob es möglich ist, dies zu tun Pfad stattdessen – Rob
Es ist zu spät, um STI an dieser Stelle leider zu implementieren, ich würde wieder mit viel Codierung beginnen müssen. Kennen Sie den Grund warum ?, wenn: proc {| o | o.value_type == 3} 'funktioniert nicht? oder meine anderen Methoden funktionieren nicht. Es wäre schön zu wissen, warum es nicht funktioniert, also weiß ich, ob es eine Sackgasse ist oder ob es Hoffnung gibt. – Rob
Der Grund, warum die Option _if_ nicht funktioniert, wird in meiner Antwort erklärt. Es spielt keine Rolle, welchen Wert/proc Sie an _if_ übergeben, die Methode 'mount_uploader' verwendet sie nicht. Ich würde die Meinung von @ МалъСкрылевъ über die Verwendung von STI an zweiter Stelle setzen. –