2

如何在下面的代码中动态传递选项哈希?

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)。这两种型号具有完全不同的回形针存储选项(样式、路径等)

4

2 回答 2

0

我想它会像这样

class Resource < ActiveRecord::Base
    belongs_to :attachable, :polymorphic => true

    has_attached_file :attachment, attachment_options

    def attachment_options
      attachable.paperclip_options
    end
end

我正在运行,并没有测试此代码。让我知道它是否有帮助。

您可能需要编写一个类方法来检查多态关系中对象的类型,然后根据该类型传递选项

于 2013-10-15T22:36:05.040 回答
0

我不确定您目前所追求的是否可行。

问题是has_attached_fileResource 的上下文中执行。并且该类不知道attachable在任何给定时间将具有哪种类型的未来实例。

为此,该调用需要获取并存储一个 lambda(或方法名称),然后在给定实例的上下文中评估它(或调用该方法)并使用 call 返回的选项。只有这样,您才能根据关系的具体类型有不同的选择。

据我所知,回形针没有这个功能。

于 2013-10-16T02:36:19.427 回答