2012-03-17 50 views
1

我有一个模型3个附件,请帮我干。DRY和回形针

class Somename < ActiveRecord::Base 

has_attached_file :picture, :url => "/uploads/p/:id/picture.:extension" 
validates_attachment_presence :picture 
validates_attachment_content_type :picture, :content_type => ['image/jpeg', 'image/png'] 

has_attached_file :another_picture, :url => "/uploads/p/:id/another_pictures/:style/another_picture.:extension", 
    :styles => { main: '720x480#', small: '480x311#' } 
validates_attachment_presence :another_picture 
validates_attachment_content_type :another_picture, :content_type => ['image/jpeg', 'image/png'] 

has_attached_file :last_one, :url => "/uploads/p/:id/last_one.:extension" 
validates_attachment_presence :last_one 
validates_attachment_content_type :last_one, :content_type => ['image/jpeg', 'image/png'] 
end 

特别验证。为什么我不能做这样的事情:

validates_attachment_presence :picture, :another_picture, :last_one 

谢谢!

回答

0

你可以尝试这样的事情(不知道是否会工作完全按原样用回形针,但可能应该很好地工作):

(见source code of validates_attachment_presence,它会更清楚怎么回事)

module PaperclipEnhancement 
    def validates_attachments_presence(*attributes) # note the plural 'attachments' 
    attributes.each do |attribute| 
     validates_attachment_presence attribute #call the original paperclip validator 
    end 
    end 
end 

class Somename < ActiveRecord::Base 
    extend PaperclipEnhancement 
    validates_attachments_presence :picture1, :picture2 
end