Как переместить вложение скрепки Держать настройки пути в уме? - PullRequest
0 голосов
/ 27 января 2012

У меня две модели. Одним из них является изображение, которое имеет вложение под названием «файл» и сохраняет в «/ photos». Это были бы простые изображения, которые были бы внутри, скажем, альбома. У меня также есть пользователи, у которых есть вложение под названием «аватар», которое сохраняется в «аватары / и т. Д.». Как я могу скопировать одно вложение (@ 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

Изображение модели 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 голосов
/ 20 июня 2012

Возможно, не самый эффективный подход в мире, но вы можете сделать так, чтобы Paperclip импортировал изображение из URL на вашем сайте.

Допустим, вы дарите пользователю его фотографии, и в зависимости от того, что они щелкают, звонит User#update с params => { :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...
...