2010-10-28 10 views
9

Ben bazı sorunlar özel çalışıyor olmasıataş özel: yol ve: <p></p> ben "Varlık" sahip adında bir polimorfik sınıf var: ataş ile has_attached_file için url seçenekleri: yol ve: 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 

interpolasyonları iyi çalışıyor ama sadece

olması ben kullanıcının resminin yolunu istiyorsanız yolu ve örneğin

file_owner_type bağlı url, ben istiyorum özel istiyoruz Yardımlarınız

düzenlemek için

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

Teşekkür: Ben kendimi doğru açıklama yapmadı düşünüyorum. Zaten oluşturulan ve iyi çalışan enterpolasyonlar var.

Polimorfik bir varlık modelim var, sahip kullanıcı (avatar için), giysi veya giyinme olabilir. Ve dosya sahibine bağlı olarak farklı yol olmasını istiyorum. Ben de resim

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

konur ama sadece bir kullanıcı resmini istiyorsanız bu yolu

"/attachments/user_x/dressing_/garment_/category_/something_style.jpg" yılında avatar koyacağız çalışan bir giysi varlık eklemek istediğiniz bu kez de

Ben

"/attachments/user_x/something_style.jpg" koymak istiyorum oysa.

sayesinde

+0

İnterpolasyon kodunuzu burada gösterebilirsiniz ... belki orada bir sorun var – Rohit

cevap

10
url böyle

şey: enterpolasyonuna sonra

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

: Eğer _User, _dressing, _garmet, _category değişkenleri ayarlamak gerekir

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 

Bildirimi senin modellerinden.

Bu yardımcı olur umarım.

+0

Thx ama zaten iyi çalışan enterpolasyonlar var. Polimorfik bir varlık modelim var, sahip kullanıcı (avatar için), giysi veya giyinme olabilir. Ve dosya sahibine bağlı olarak farklı bir yola sahip olmak istiyorum. Şu anda, bir giysi varlık eklemek istiyorum ne zaman iyi çalışır "/attachments/user_x/dressing_y/garment_z/category_u/something_style.jpg" konur ama sadece bir kullanıcı resmi istiyorum eğer bu yol "/attachments/user_x/dressing_/garment_/category_/something_style.jpg" ifadesinde "/attachments/user_x/something_style.jpg" ifadesini kullanmak istiyorum. – guts

+0

Cevabımı, sorudaki açıklamaya göre değiştirdim. –

+0

Teşekkür ederim, tam olarak aradığım şey ^ – guts

0

Tanımladığınız enterpolasyonunuzda attachment.instance.file_owner.class.downcase'u deneyin.

İlgili konular