标签: paperclip

更智能的回形针验证

我在rails应用程序中使用paperclip,并在我的模型中进行以下三种验证

validates_attachment_presence :photo                    
validates_attachment_size :photo, :less_than=>1.megabyte
validates_attachment_content_type :photo, :content_type=>['image/jpeg', 'image/png', 'image/gif'] 
Run Code Online (Sandbox Code Playgroud)

如果用户忘记添加附件,则所有三个验证都会失败,因此会向用户显示以下三个错误:

# Photo file name must be set.
# Photo file size file size must be between 0 and 1048576 bytes.
# Photo content type is not included in the list
Run Code Online (Sandbox Code Playgroud)

我认为最好只显示此实例中的第一个错误,因为其他两个错误纯粹是后果...我希望用户只看到后两个错误,如果已添加附件但不符合验证标准.

我确定没有预先出现的验证可以做这种事情,并且通过阅读vendor/plugins/paperclip/lib/paperclip.rb中的代码,我看到validates_attachment_size方法支持:unless参数如下所示:

def validates_attachment_presence name, options = {}
  message = options[:message] || "must be set."
  validates_presence_of :"#{name}_file_name", 
                        :message => message,
                        :if      => options[:if],
                        :unless  => options[:unless]
end
Run Code Online (Sandbox Code Playgroud)

所以,我在想我可以做以下事情:

validates_attachment_size :photo, :less_than=>1.megabyte, :unless=> :photo.blank
Run Code Online (Sandbox Code Playgroud)

但这打破了应用程序.有没有经验做过这种事情?对回形针源代码有很好的贡献.

编辑:

我试过用这个:

validates_attachment_size :photo, …
Run Code Online (Sandbox Code Playgroud)

validation model ruby-on-rails paperclip

19
推荐指数
2
解决办法
2万
查看次数

如何使用Paperclip复制文件

有没有人知道用Paperclip使用S3存储复制文件的方法?在我尝试自己编写之前,我只是想确保没有办法做到这一点.谢谢

ruby-on-rails copying paperclip

19
推荐指数
1
解决办法
5606
查看次数

Heroku:使用回形针运行imagemagick

我在我的mac os x计算机上安装了image magick,现在我想将它部署到heroku.我在heroku上安装了paperclip插件,但上传图片时出现此错误:

Paperclip::CommandNotFoundError
Run Code Online (Sandbox Code Playgroud)

之前我在计算机上没有imagemagick instaledl时出现此错误,但现在我想部署它,如何让图像magick在heroku上工作?

ruby ruby-on-rails imagemagick heroku paperclip

19
推荐指数
2
解决办法
2万
查看次数

防止Paperclip在更新时删除/覆盖附件

我很难弄清楚如何防止Paperclip删除旧版本的附件(图像).

我有一个模型,网站,有一个附件,标志.我想保留旧徽标,因为我将跟踪模型的更改并希望查看徽标的历史记录.

我正在跟踪另一个模型中的更改,该模型具有对文件路径的引用.我的问题是,在使用新徽标更新网站时,Paperclip会先刷新旧徽标.

令我惊讶的是,在创建新附件之前,没有可以切换到防止Paperclip冲洗旧附件的选项.

有任何想法吗?

ruby-on-rails paperclip ruby-on-rails-3

19
推荐指数
1
解决办法
5398
查看次数

Plupload在添加文件时自动开始上传

添加文件后,我想自动开始上传过程.我在FilesAdded结束时调用了start函数,但它没有启动上传.

uploader.bind('FilesAdded', function(up, files) {
      var str = "";
      for (var i in files) {
        str += '<div id="' + files[i].id + '">' + files[i].name + ' (' + plupload.formatSize(files[i].size) + ') <b></b></div>';
      }
      $('#filelist').html(str);
      up.refresh();
      up.start();
    });
Run Code Online (Sandbox Code Playgroud)

这是我的创作代码

var uploader = new plupload.Uploader({
      runtimes: 'html5,flash,silverlight',
      autostart : true,
      url: '<%= images_path %>',
      max_file_size: '10mb',
      multipart: true,
      browse_button: "pickfiles",
      container: "the-uploader",
      drop_element : "drop-area",  
      multipart_params: {
        '_http_accept': 'application/javascript',
        '<%=request_forgery_protection_token%>': '<%=form_authenticity_token%>',
        '<%=request.session_options[:key]%>': '<%=request.session_options[:id]%>'
      },
      filters: [
        {title: "Images", extensions: "avi,jpg,jpeg,png,zip"}
      ], …
Run Code Online (Sandbox Code Playgroud)

javascript paperclip plupload ruby-on-rails-3

19
推荐指数
3
解决办法
2万
查看次数

如何将文件内容类型验证为回形针的pdf,word,excel和纯文本?

在我的模型中:

 has_attached_file :uploaded_file,  
                      :url => "/policy_documents/get/:id",  
                      :path => "/public/policy_documents/:id/:basename.:extension" 

    validates_attachment_size :uploaded_file, :less_than => 10.megabytes    
    validates_attachment_presence :uploaded_file 
     validates_attachment_content_type :uploaded_file, :content_type =>['application/pdf', 'application/xlsx'],
                                                       :message => ', Only PDF, EXCEL, WORD or TEXT files are allowed. '
Run Code Online (Sandbox Code Playgroud)

在此之后,它只能上传PDF文档,而不是excel或文字或文本文档.请帮助我,我失踪了!

paperclip ruby-on-rails-3

19
推荐指数
1
解决办法
2万
查看次数

使用Paperclip将小文件上传到s3挂起,CPU使用率为100%

我在AWS EC2大型实例上有一个<20MB pdf文件的目录(每个pdf代表一个广告).我正在尝试使用ruby和DM-Paperclip将每个pdf文件上传到S3.

大多数文件上传成功,但有些文件似乎需要数小时才能将CPU挂起100%.我通过在相关部分中打印调试语句找到了导致问题的代码行.

 # Takes an array of pdf file paths and uploads each to S3 using dm-paperclip
 def save_pdfs(pdfs_files)
  pdf_files.each do |path|
  pdf = File.open(path)
  ad = Ad.new
  ad.pdf.assign(pdf) # <= Last debug statment is printed before this line
  begin
    ad.save
  rescue => e
    # log error
  ensure
    pdf.close
  end
 end
Run Code Online (Sandbox Code Playgroud)

为了帮助解决问题,我将过程固定在100%的过程中.结果是数十万行像这样:

 ...
 stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3543, ...}) = 0
 stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3543, ...}) = 0
 stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3543, ...}) = 0
 ... 500K lines
Run Code Online (Sandbox Code Playgroud)

接下来几千:

 ...
 brk(0x1224d0000)                        = …
Run Code Online (Sandbox Code Playgroud)

cpu upload amazon-s3 paperclip

19
推荐指数
1
解决办法
558
查看次数

编辑时Rails文件上传(回形针)

我自己做了一个简单的rails blogging-type应用程序,我使用Paperclip上传图像文件.我的一切工作正常,花花公子.我甚至把它连接到一个S3斗,等等.Smiffy对吗?

但是在编辑/更新帖子时我无法理解该怎么做.现在看来,我所拥有的就是我的表单模板上的这个字段:

= f.file_field :image
Run Code Online (Sandbox Code Playgroud)

因此,即使有先前附加的图像,也可以说"post/5/edit",该字段显示"No file selected".

更糟糕的是,如果我改变主意并且不想附加图像,则没有明显的方法来清除当前图像.

如何使这一点更加用户友好,并确保当前图像 - 文本/网址很好 - 显示为文本字段中的值和/或用户可以将当前图像更改为无.

ruby-on-rails amazon-s3 paperclip ruby-on-rails-4

19
推荐指数
1
解决办法
7186
查看次数

如何将Paperclip图像添加到数据库后调整其大小?

我已经在我的图像表中添加了2000张图片,而我正在使用Paperclip插件创建拇指.我想知道是否有办法通过数据库并添加另一个:styles元素.

例如,当我添加图像时,我在模型中有以下内容:

has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" }
Run Code Online (Sandbox Code Playgroud)

但是,现在我想添加一个:large属性并将其应用于我表中已有的每个图像.就像是:

has_attached_file :image, :styles => { :large => "800x800>", :medium => "300x300>", :thumb => "100x100>" }
Run Code Online (Sandbox Code Playgroud)

这可能吗?或者我是否需要重新添加所有2000张照片?

ruby-on-rails paperclip

18
推荐指数
2
解决办法
7007
查看次数

ruby将回形针附件从一个模型复制到另一个模型?

我有两个这样的模特: -

模型1 - 卡 - 包含首页
附件感兴趣的数据的表示名称= cardimage
模型2 - 用户 - 包含用户
附件名称=头像

当我创造!一张新卡,我希望将用户模型中的头像作为新的cardimage复制到卡片模型中.

这有一个简单的衬垫吗?

的Ruby/Rails /回形针

ruby ruby-on-rails paperclip

18
推荐指数
1
解决办法
8912
查看次数