在上传之前对rails中的文件大小进行自定义验证

时间:2011-06-22 13:48:21

标签: ruby-on-rails-3 validation activerecord

在我的表格中我有

<%= label_tag("file", "Attachment:") %><%= file_field_tag "uploadfile" %>

在我的模型中,我想写这个

validate :validates_uploadfile

def validates_uploadfile(file)
    max_size = 2048
    errors.add(:uploadfile, "File size exceeds limitation") if file.size > max_size
end

在我的控制器中,我可以拨打这样的内容

validates_upload_file(params[:uploadfile])

有没有办法在上传前验证文件上传(不是使用javascript或查看文件扩展名)
谢谢你的帮助

UPD

validate :uploadfile_validation, :if => "uploadfile?"

def uploadfile_validation
    errors[:uploadfile] << "should be less than 1MB" if uploadfile.size > 1.megabytes
end

3 个答案:

答案 0 :(得分:16)

这是我的尺码验证代码(我使用CarrierWave进行上传)。

  validate :picture_size_validation, :if => "picture?"  

  def picture_size_validation
    errors[:picture] << "should be less than 1MB" if picture.size > 1.megabytes
  end

干杯。

答案 1 :(得分:8)

您可以使用:

validates_size_of :picture, maximum: 1.megabytes, message: "should be less than 1MB"

答案 2 :(得分:2)

如果我没有弄错,那么上面的所有方法一旦上传(甚至可能处理)就检查文件大小但是如果我在文件输入字段中选择1GB文件来考虑没有javascript验证或者javascript刚刚禁用?它可能上传,花了很多时间告诉你它太大了,那只是正确的。我是新手,所以我可能错了什么......