【问题标题】:Use different CarrierWave uploaders for one Model based on attributes of another Model - RAILS根据另一个模型的属性为一个模型使用不同的 CarrierWave 上传器 - RAILS
【发布时间】:2016-04-26 21:45:28
【问题描述】:

我正在开发一个 Rails 项目,用户(模型“用户”)可以上传文档(模型“文档”)。我正在使用 CarrierWave 上传文件。用户可以拥有不同类型的帐户(免费或高级)。如果用户有免费帐户,我只想允许他们上传某些类型的文件。

CarrierWave Uploader 文件不知道 current_user 是什么,所以我不能这样检查。而且我理解在 Document 模型中使用 current_user 是不好的做法。

我最好的处理方法是什么?

【问题讨论】:

  • 只用于那个控制器。
  • 文档模型和User模型有关系吗?

标签: ruby-on-rails ruby devise model carrierwave


【解决方案1】:
def extension_white_list
  return %w(jpg jpeg gif png pdf docx) if model.user.account_type?(:free)
  %w(jpg jpeg gif png pdf docx doc xlsx xls odt ods csv txt)
end

您可以通过变量model 访问上传器中的Document 模型。如果Document 模型通过关系与User 模型连接,您可以执行上述操作。请注意,您必须在 User 模型中定义 account_type 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    相关资源
    最近更新 更多