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::baseBrochureUploader有这个方法:

  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