我有一个宣传册模型。手册属于一个财产。属性允许上传小册子(pdf文件)。
手册模型:
class Brochure < ApplicationRecord
belongs_to :property
mount_uploader :document, BrochuresUploader
end
在我的properties_controller
文件和update
方法中,属性更新后,它的调用是:
def update
find_property
authorize! :update, @property
...
if @property.update(property_params)
brochure_service = BrochureService.new(@property)
brochure_service.add_brochures(params[:property][:brochures], [])
brochure_service.remove_marked_brochures
flash[:notice] = "Listing edited successfully"
redirect_to action: :show
...
因此它称为宣传册服务方法:
def add_brochures(new_brochures, removed_brochures)
new_brochures&.pop
removed_brochures = removed_brochures&.split(',')
new_brochures&.each do |brochure|
next if removed_brochures.include?(brochure.original_filename)
@property.brochures.create(document: brochure)
end
end
继承BrochureUploader
的{{1}}具有以下方法:
CarrerWave::Uploader::base
这里的问题是 def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
上传小册子时,它们会放在一个递增的文件夹名称中,例如model.id
1
2
。
应该将它们放在基于属性ID的文件夹中,例如3
。
我不确定如何将该媒体资源ID传递到此上传器中。
如果您需要更多信息,请告诉我
答案 0 :(得分:0)
我可以像这样访问模型上的属性:
#{model.property.id}
参考手册的模型。小册子property
可以访问belongs_to