【问题标题】:Rails paperclip default image only under certain conditionsRails 回形针默认图像仅在某些条件下
【发布时间】:2018-11-13 04:53:29
【问题描述】:

我有一个潜在客户模型,该模型由产品和优惠的lead_status 参数拆分。只有具有产品状态的潜在客户才应包含图像,而优惠则不应。我已将附加的 product_image 表迁移到架构并尝试仅为产品设置默认图像。像这样:

class Lead < ApplicationRecord


has_attached_file :product_image, styles: { small: "150x150>", default: "350x350"}
validates_attachment_content_type :product_image, content_type: /\Aimage\/.*\z/

before_save :product_image_default_url

 def product_image_default_url
    if self.lead_status == "product" && self.product_image.url.nil?
      self.product_image.url = "/images/:style/default_user_avatar.png"
 end
end
  1. 每当我保存没有上传图片的新线索时,我都会将“/product_images/original/missing.png”作为默认网址。不管它有什么状态。
  2. 模型无法通过其状态识别新潜在客户

我该如何改变呢?强制我的潜在客户模型根据“产品”状态保存默认图像 url 并忽略所有具有“报价”状态的图像?

我的 rails 版本是 5.2.1 和回形针 6.0.0

【问题讨论】:

标签: ruby-on-rails ruby paperclip


【解决方案1】:

尝试以下,

has_attached_file 
  :product_image, 
  styles: { small: "150x150>", default: "350x350"},
  default_url: ":style/default_user_avatar.png"

  # app/assets/images/medium/default_user_avatar.png
  # app/assets/images/thumbs/default_user_avatar.png

现有的方法是,

def default_url
  if @attachment_options[:default_url].respond_to?(:call)
    @attachment_options[:default_url].call(@attachment)
  elsif @attachment_options[:default_url].is_a?(Symbol)
    @attachment.instance.send(@attachment_options[:default_url])
  else
    @attachment_options[:default_url]
  end
end

在初始化器中,为后续提供猴子补丁,

require 'uri'
require 'active_support/core_ext/module/delegation'

module Paperclip
  class UrlGenerator

    def default_url
      if @attachment.instance.lead_status == 'product'
        default_url = attachment_options[:default_url]
      else
        default_url = # provide another missing default_url
      end 
      if default_url.respond_to?(:call)
        default_url.call(@attachment)
      elsif default_url.is_a?(Symbol)
        @attachment.instance.send(default_url)
      else
        default_url
      end
    end

  end
end

根据情况更新

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-22
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 2016-05-19
    相关资源
    最近更新 更多