使用Carrierwave和Rails 3.2.6。一切都很好,除了我需要对表格进行排序,其中一些附件按文件大小显示。我正在使用S3进行雾化存储。
假设我的Carrierwave显示如下:
<%= @project.attachment %>
我可以在字段名称后面使用'.size'来显示文件的大小:
<%= @project.attachment.size %>
显示文件大小(以字节为单位),但由于我需要在从数据库获取记录时使用order子句,因此我无法对此进行排序。 有没有办法在文件大小上传后将文件大小写入数据库中的特定列,这样我可以对此进行排序?
非常感谢答案 0 :(得分:2)
这对我有用
before_save :update_project_attributes
private
def update_project_attributes
if project.present? && project_changed?
self.file_size = project.file.size
end
end
答案 1 :(得分:0)
您应该向模型添加虚拟属性,并定义返回文件大小的自定义getter方法。然后,您可以像往常一样对此虚拟属性进行排序。如果您需要更多详细信息,请告诉我,我会尽力提供!
答案 2 :(得分:0)
确定, 得到这个用于before_save
before_save :set_size
def set_size
self.size = self.upload.size
end
其中upload是装载字段,size是用于存储大小的新db列。