Wie würde ich nur eine Spalte verwenden, um alle vier Büroklammerattribute darzustellen?So verwenden Sie eine Büroklammer mit einer Spalte
- _file_name
- _file_size
- _content_type
- _updated_at
Ich teste nur mit dem datei_name Attribut, denn das ist alles, was Büroklammer ist erfordert, und die Speicherung aller meiner Daten in einem Wert Spalte in Feld, die FileField Inherits. Ich dachte, ich könnte nur das Lesen und Schreiben von Dateiname überschreiben, aber das funktioniert nicht.
#model
class FileField < Field
has_attached_file :logo
do_not_validate_attachment_file_type :logo
def logo_file_name=(file_name)
if file_name.present?
@value = file_name
end
end
def logo_file_name
@value
end
#form
= f.input :logo, as: :file
aktualisieren Meine Syntax falsch war, konnte ich es mit dem folgenden
arbeiten erhaltenhas_attached_file :attachment
validates_attachment :attachment, presence: true,
content_type: { content_type: ["image/jpeg", "image/png"] },
size: { in: 0..15.kilobytes }
def attachment_file_name=(file_name)
if file_name.present?
self.value = "#{file_name},#{attachment_content_type},#{attachment_file_size},#{attachment_updated_at}"
end
end
def attachment_file_name
self.value.to_s.split(",").first
end
def attachment_content_type=(content_type)
if content_type.present?
self.value = "#{attachment_file_name},#{content_type},#{attachment_file_size},#{attachment_updated_at}"
end
end
def attachment_content_type
self.value.to_s.split(",").second
end
def attachment_file_size=(file_size)
self.value = "#{attachment_file_name},#{attachment_content_type},#{file_size},#{attachment_updated_at}"
end
def attachment_file_size
self.value.to_s.split(",").third.to_i unless self.value.to_s.split(",").third.blank?
end
def attachment_updated_at=(value)
self.value = "#{attachment_file_name},#{attachment_content_type},#{attachment_file_size},#{value}"
end
def attachment_updated_at
self.value.to_s.split(",").fourth
end
kein solches Glück, obwohl ich nicht sicher bin, wo es falsch läuft. Mit meinem Code oben bekomme ich keine Änderungen, aber wenn ich explizit self.value = @value setze, speichert es Werte des Logos (d. H. Es hat eine URL und andere Büroklammerattribute), aber es kann die Datei nicht finden. Ich bin mir nicht sicher, wie Büroklammer die Dateien speichert und wie man das verwendet – user2034276
Wahrscheinlich ist Ihre beste Wette, nur die zusätzlichen Spalten hinzuzufügen. Ich weiß, dass Sie die Informationen nicht benötigen, aber wird es wirklich ein Problem verursachen? Vielleicht besser, nur in den sauren Apfel zu beißen und die zusätzlichen Spalten hinzuzufügen. –
Das Problem besteht darin, dass die Spalten zu einer Tabelle hinzugefügt werden, die für STI in einem Edelstein verwendet wird, sodass alle Felder, die von ihm im Edelstein geerbt wurden, für alle Büroklammerspalten null aufweisen. Es ist nicht ideal, aber es ist die einzige Lösung, die ich bisher bekommen habe. – user2034276