使用carrierwave在动态字段上安装mount_upload

时间:2014-05-27 18:47:28

标签: ruby-on-rails ruby carrierwave activemodel

我有一个名为CustomFields的模型,它属于一个主类(has_many:custom_fields)。此模型具有contentsdatatype属性。根据对象的数据类型,我希望内容可以是使用carrierwave的字符串或上传者。我做了以下事情:

class CustomField < ActiveRecord::Base

  after_initialize :set_uploader 

  def set_uploader
    if self.datatype == 'file'
      CustomField.mount_uploader :contents, ImageUploader
    end
  end 

end

它不起作用,因为它将所有对象的内容转换为上传者,而不仅仅是'file'数据类型。我该如何解决?

1 个答案:

答案 0 :(得分:-1)

只是一个猜测:

class CustomField < ActiveRecord::Base

  mount_uploader :image, ImageUploader, if: :file?

  def file?
    self.datatype == 'file'
  end
end