ruby-on-rails - Carrierwave:在非ActiveRecord继承类中挂载Uploader

标签 ruby-on-rails rails-activerecord carrierwave

所以,我有一个购物车类,我一直保存在 session 中,直到购买完成,我需要能够在购买完成后将文件上传到购物车(不要问为什么,说来话长),我将所有这些信息转储到一个保存在数据库中的类中。

我经常使用 Carrierwave,到目前为止我没有遇到任何问题,但是当我尝试将 uploader 安装到其中时,我得到了

Cart:Class 的未定义方法 `mount_uploader'

问题是,是否可以将 uploader 挂载到不继承 ActiveRecord:Base 的类中,或者我是否遇到了另一个问题?我一直无法让它发挥作用,所以如果这是问题所在,我不想浪费更多时间。

最佳答案

如果您的模型不是 ActiveRecord::Base 的子类,您将得到该异常:

undefined method `mount_uploader' for Derp:Class

幸运的是,如果您的类扩展了 CarrierWave::Mount 模块并且该类有一个调用实例方法 store_(mounted_field) 的保存方法,您可以使用 mount_uploader!

总而言之,ActiveRecord::Base-less 类看起来像

class Derp
    extend CarrierWave::Mount
    attr_accessor :name, :image
    mount_uploader :image, ImageUploader

    def save
        self.store_image!
    end
end

关于ruby-on-rails - Carrierwave:在非ActiveRecord继承类中挂载Uploader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26918038/

相关文章:

ruby-on-rails-3 - 如何使用CarrierWave仅处理原始图像文件?

ruby-on-rails - 事件模型序列化程序 - 是否可以显示嵌入对象的 URL?

ruby-on-rails - 引用连接 Rails 表中枚举的查询

ruby-on-rails - 使用 lambda 的事件记录范围 - 在 Rails 控制台中返回 No method 错误

ruby-on-rails - 默认 URL 未在 Rails 中使用 Carrierwave 加载

ruby-on-rails - CarrierWave Backgrounder 没有将版本图像上传到 AWS S3

ruby-on-rails - 将 Rails 应用从 3.2.6 升级到 3.2.8

ruby-on-rails - 增强 Rails 5.0.1/PostgreSQL 中的数据库任务

ruby-on-rails - 如何测试 Rails 3 中的 Controller 是否使用了正确的布局

ruby-on-rails - Rails迁移: how to retrieve current migration version?