加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 显示带有表单错误的活动存储验证错误

发布时间:2020-12-16 21:08:33 所属栏目:百科 来源:网络整理
导读:我正在使用rails 5.2,bootstrap-4,bootstrap_form和active-storage文件正在成功上传.我想要的是当我在表单中输入公司名称时,它应该检查company_logo. 我试过这个,当我在表单中包含错误循环时它工作得很好 在这里看 - if @company.errors.any? #error_explana
我正在使用rails 5.2,bootstrap-4,bootstrap_form和active-storage文件正在成功上传.我想要的是当我在表单中输入公司名称时,它应该检查company_logo.

我试过这个,当我在表单中包含错误循环时它工作得很好
在这里看

- if @company.errors.any?
  #error_explanation
    %ul
      - @company.errors.full_messages.each do |message|
        %li= message

型号代码

has_one_attached :company_logo
validates :name,:company_logo,presence: true
after_validation :is_logo?,if: Proc.new { |a| a.name? }


def is_logo?
      errors.add(:base,'Please upload your company logo.') if !self.company_logo.attached?
end

我想用文件字段进行这种验证

解决方法

实际上active_storage不支持验证.

我为在场做了什么:

class CompanyModel < ApplicationRecord
    has_one_attached :company_logo

    validate :company_logo?

    private

    def company_logo?
      errors.add(:base,'Please upload your company logo.') unless company_logo.attached?
    end
  end

但是这会将文件上传到您的存储并在数据库中创建active_storage blob字段…

唯一的workarround我发现删除存储和数据库字段上的文件(太丑了):

def company_logo?
  # Clean exit if there is a logo
  return if company_logo.attached?

  # Unless add error
  errors.add(:base,'Please upload your company logo.')

  # Purge the blob
  company_logo.record.company_logo_attachment.blob.purge

  # Purge attachment
  company_logo.purge
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读