2010-10-28 61 views
9

我想定製一些問題:路徑:網址選項has_attached_file用回形針:回形針定製:路徑:URL

我有一個名爲「資產」有一個多態類:

class Asset < ActiveRecord::Base 

    belongs_to :file_owner, :polymorphic => true 

    has_attached_file :picture, :styles => { ...}, 
      :url => "/attachments/user_:user/dressing_:dressing/garment_:garment/category_:category/:basename_:style.:extension", 
      :path => ":rails_root/public/attachments/user_:user/dressing_:dressing/garment_:garment/category_:category/:basename_:style.:extension" 
end 

的插值效果很好,但我想自定義路徑並根據file_owner_type

爲實例的URL,如果我想在用戶的圖片路徑,我想只是

:path => ":rails_root/public/attachments/user_:user/:basename_:style.:extension 

感謝您的幫助

編輯: 我覺得我沒有正確地解釋自己。我已經創建了內插並運行良好。

我有一個多態的資產模型,所有者可以是一個用戶(爲化身),一件服裝或一件衣服。 而且我想有一個不同的路徑取決於文件所有者。 在這個時候,當我要添加衣服資產運作良好的圖片放在

"/attachments/user_x/dressing_y/garment_z/category_u/something_style.jpg"

,但如果我只想要一個用戶圖片這條道路將使化身

"/attachments/user_x/dressing_/garment_/category_/something_style.jpg"

,而我希望把它放在

"/attachments/user_x/something_style.jpg"

感謝

+0

你可以在這裏顯示你的插值代碼...也許這裏有一個問題 – Rohit 2010-10-29 12:12:22

回答

10

像這樣的網址:

:url => "/attachments/:path/:basename_:style.:extension", 

然後在插值:

Paperclip.interpolates :path do |attachment, style| 
    if attachment.instance.file_owner_type == User.class.name 
    # first set the _user variable (something like self.owner.id.to_s) 
    return "user_" + _user 
    else 
    # first set the _user, _dressing, _garmet, _category variables from your models 
    return "user_#{_user}/dressing_#{_dressing}/garment_#{_garmet}/category_#{_category}/" 
    end 
end 

請注意,您需要設置_user,_dressing,_garmet,_category變量從你的模型。

希望這會有所幫助。

+0

Thx,但我已經有內插效果很好。 我有一個多態的資產模型,所有者可以是一個用戶(爲化身),一件服裝或一件衣服。我想根據文件所有者擁有不同的路徑。 在這個時候,當我想添加一件服裝資產時,它的效果很好,圖片放在「/附件/用戶名/密碼_y/garment_z/category_u/something_style.jpg」中,但如果我只想要一張用戶圖片,頭像「/attachments/user_x/dressing_/garment_/category_/something_style.jpg」,而我想把它放在「/attachments/user_x/something_style.jpg」。 – guts 2010-10-28 10:07:31

+0

我已經根據問題中的說明更改了我的答案。 – 2010-10-29 08:05:26

+0

謝謝,這正是我正在尋找^ – guts 2010-11-03 16:07:20

0

在您定義的插值中嘗試:attachment.instance.file_owner.class.downcase