paperclip - получить global_id для объекта на другой стороне полиморфных отношений - PullRequest
1 голос
/ 20 февраля 2012

Я использую скрепку для загрузки изображений с полиморфным классом активов.Я хочу добавить значение с именем global_id в путь к файлу, чтобы предотвратить сброс всего содержимого в один каталог.Каждый объект, который будет иметь актив, будет иметь уникальный global_id, и, похоже, интерполяция скрепки должна справиться с этим.

class Asset < ActiveRecord::Base
  belongs_to :assetable, :polymorphic => true

  Paperclip.interpolates :global_path  do |attachment, style|
     # ???
     object.global_id
  end

  has_attached_file :asset, 
    :hash_secret => "jtsomething",
    #:url => "/images/:global_path/:hash_:basename_:style.:extension",
    :path => UPLOAD_PATH + "/:global_path/:hash_:basename_:style.:extension",
    :styles => { :medium => "200x200>", :thumb => "75x75>"  
 }

Как получить доступ к global_id на другой стороне этого отношения?

thx

1 Ответ

0 голосов
/ 20 февраля 2012

Вы можете получить доступ к другой стороне отношения, как и во всех других отношениях, с помощью средства доступа assetable из экземпляра вашей модели:

Paperclip.interpolates :global_path  do |attachment, style|
   attachment.instance.assetable.global_id
end

при условии, что вы храните свой глобальный идентификатор в поле global_id вашего объекта или что его модель имеет метод global_id

...