如何在下面的代码中动态传递选项哈希?
class Resource < ActiveRecord::Base
belongs_to :attachable, :polymorphic => true
has_attached_file :attachment #, paperclip_options from attachable
end
class ItemTypeOne < ActiveRecord::Base
has_many :resources, :as => :attachable, :dependent => :destroy
def paperclip_options
ITEM_TYPE_ONE_OPTIONS
end
end
class ItemTypeTwo < ActiveRecord::Base
has_many :resources, :as => :attachable, :dependent => :destroy
def paperclip_options
ITEM_TYPE_TWO_OPTIONS
end
end
我有两个不同的模型(在上面的代码中称为ItemTypeOne和ItemTypeTwo)。这两个型号具有完全不同的Paperclip存储选项(样式,路径等)
答案 0 :(得分:0)
我认为它会像这样
class Resource < ActiveRecord::Base
belongs_to :attachable, :polymorphic => true
has_attached_file :attachment, attachment_options
def attachment_options
attachable.paperclip_options
end
end
我正在运行,并没有测试此代码。如果有帮助,请告诉我。
您可能需要编写一个类方法,在多态关系中检查对象的类型,然后根据该类型传递选项
答案 1 :(得分:0)
我不确定你现在能做些什么。
问题是has_attached_file
正在Resource
类的上下文中执行。并且班级不知道在任何给定时间将有哪种类型的attachable
未来实例。
为此,该调用需要获取并存储lambda(或方法名称),然后在给定实例的上下文中对其进行评估(或调用方法)并使用调用返回的选项。只有这样才能有不同的选择,具体取决于关系的具体类型。
据我所知,paperclip没有此功能。