我正在开发一个Rails项目,用户(模型“User”)可以上传文档(模型“Document”)。我正在使用CarrierWave上传文件。用户可以拥有不同类型的帐户(免费或高级)。如果用户有免费帐户,我只想允许他们上传某些类型的文件。
CarrierWave Uploader文件不知道current_user是什么,所以我不能这样检查。我理解在Document模型中使用current_user是不好的做法。
对我来说,最好的办法是什么?
答案 0 :(得分: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
您可以通过变量Document
访问上传者中的model
模型。如果Document
模型通过关系与User
模型相关联,则可以执行上面给出的操作。请注意,您必须在account_type
模型中定义User
方法。