ruby-on-rails - Rails 回形针默认图像仅在某些条件下
问题描述
我有一个 Lead 模型,它由产品和优惠的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
- 每次当我保存没有上传图片的新线索时,我都会得到“/product_images/original/missing.png”作为默认网址。不管它有什么状态。
- 模型无法通过其状态识别新线索
我该如何改变呢?强制我的潜在客户模型根据“产品”状态保存默认图像 URL 并忽略所有具有“报价”状态的图像?
我的 rails 版本是 5.2.1 和回形针 6.0.0
解决方案
尝试以下,
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
根据情况更新
推荐阅读
- python - set 如何在 Python 中与“abc”和“bac”一起使用?
- ios - 无法在 xcode 中构建我的新 react-native 项目 - 出现配置文件配置错误
- java - HTTP 状态 404 - 在远程 Tomcat 服务器上部署时未找到
- php - 在会话中存储用户信息
- devise - 设计新用户密码和编辑用户密码 重定向多次,无法通过 忘记密码
- javascript - 页面加载时随机生成变量
- javascript - 如何将元素拆分为两个可连续的部分并在它们之间添加另一个元素
- javascript - 如何用构造函数替换待办事项列表?
- mysql - 创建的数据库返回空值查询的问题
- python - 对于任何用户给定的文本文件,程序将读取、分析和写入每个单词以及在输出文件中找到该单词的行号