Ruby on Rails:CarrierWave - 将 model.id 与不同的模型关联(外键)
Ruby on Rails: CarrierWave - Associate model.id with a different model (foreign key)
我有一个宣传册模型。小册子属于 属性。属性允许上传小册子(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
继承CarrerWave::Uploader::base
的BrochureUploader
有这个方法:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
这里的问题是 model.id
上传小册子时,它们会被放入一个递增的文件夹名称中,例如 1
2
3
.
它们应该放在基于 属性 ID 的文件夹中,例如 57
。
我不确定如何将 属性 ID 传递给此上传器。
如果您需要更多信息,请告诉我
我可以像这样访问模型上的 属性:
#{model.property.id}
型号参考小册子。小册子可以访问 property
因为它 belongs_to
我有一个宣传册模型。小册子属于 属性。属性允许上传小册子(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
继承CarrerWave::Uploader::base
的BrochureUploader
有这个方法:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
这里的问题是 model.id
上传小册子时,它们会被放入一个递增的文件夹名称中,例如 1
2
3
.
它们应该放在基于 属性 ID 的文件夹中,例如 57
。
我不确定如何将 属性 ID 传递给此上传器。
如果您需要更多信息,请告诉我
我可以像这样访问模型上的 属性:
#{model.property.id}
型号参考小册子。小册子可以访问 property
因为它 belongs_to