根据另一个模型的属性对一个模型使用不同的 CarrierWave 上传器 - RAILS
Use different CarrierWave uploaders for one Model based on attributes of another Model - RAILS
我正在开发一个 Rails 项目,用户(模型 "User")可以上传文档(模型 "Document")。我正在使用 CarrierWave 上传文件。用户可以拥有不同类型的帐户(免费或高级)。如果用户有免费帐户,我只想允许他们上传某些类型的文件。
CarrierWave Uploader 文件不知道 current_user 是什么,所以我无法那样检查。我明白在文档模型中使用 current_user 是不好的做法。
我处理这个问题的最佳方法是什么?
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
访问 uploader 中的 Document
模型。如果 Document
模型通过关系连接到 User
模型,您可以执行上面给出的操作。请注意,您必须在 User
模型中定义 account_type
方法。
我正在开发一个 Rails 项目,用户(模型 "User")可以上传文档(模型 "Document")。我正在使用 CarrierWave 上传文件。用户可以拥有不同类型的帐户(免费或高级)。如果用户有免费帐户,我只想允许他们上传某些类型的文件。
CarrierWave Uploader 文件不知道 current_user 是什么,所以我无法那样检查。我明白在文档模型中使用 current_user 是不好的做法。
我处理这个问题的最佳方法是什么?
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
访问 uploader 中的 Document
模型。如果 Document
模型通过关系连接到 User
模型,您可以执行上面给出的操作。请注意,您必须在 User
模型中定义 account_type
方法。