如何移动回形针附件记住路径设置?

时间:2012-01-27 04:31:13

标签: ruby-on-rails ruby image paperclip

我有两个型号。一个是图像,它有一个名为“文件”的附件并保存到“/ photos”。这些将是简单的图像,例如,在专辑中。我的用户也有一个名为“avatar”的附件,可以保存到“avatars / etc etc”。如何将一个附件(@ image.file)复制到我的用户以将其保存为他的头像?我希望用户能够在他们的专辑图像中选择他/她所拥有的图像并将其用作化身。我想复制它,所以如果用户从他们的相册中删除该图像,它将不会删除他们的头像。

用户模型代码段:

has_attached_file :avatar, :styles => { :huge => '220x220!', :full => '72x72!', :medium => '48x48!', :small => '24x24!' }, :path => ':rails_root/public/avatars/:userid_prefix/:userid/:style-:random.:extension', :url => '/avatars/:userid_prefix/:userid/:style-:random.:extension', :default_url => :default_avatar_url

Image Model Snippet

has_attached_file :file, :styles => { :large => '640x480', :avatar => '72x72!', :cover => '160x160!'}, :path => ':rails_root/public/photos/:userid_prefix/:userid/:id_:style-:random.:extension', :url => '/photos/:userid_prefix/:userid/:id_:style-:random.:extension'

1 个答案:

答案 0 :(得分:0)

这可能不是世界上最有效的方法,但您可以让Paperclip从您网站上的网址导入图片。

假设您向用户展示了他们的照片,以及他们点击的User#updateparams => { :avatar_url => 'http://www.yourownwebsite.com/url/of/image.jpg' }调用的对象。

然后在控制器中处理此参数,执行以下操作:

if params.has_key? :avatar_url
  begin
    @user.avatar = open params[:avatar_url]
  rescue
    logger.warn "Unable to open #{params[:avatar_url]}"
  end
end

if @user.save
   # Regular response handling goes here...