ruby-on-rails 设计基于类属性的ActiveStorage验证

vc9ivgsu  于 2023-11-20  发布在  Ruby
关注(0)|答案(1)|浏览(131)

在多租户应用程序中,

class Picture 
  has_one_attached :file
  belongs_to  :picture_validation

字符串
例如,验证上传的大小和使用active_storage_validations gem需要

validates :file, attached: true, size: { less_than: XXX.megabytes , message: t('is too large') }


给定应用程序的多租户方面,

class PictureValidation
  belongs_to :shop


(the租户是shop_id),并具有生成列size_less_than:integer
租户存储在session[:shop_id]中,可以被控制器操作访问。然而,这是模型定义,在创建操作中,对象不存在,因此self.shop_id不可调用。
如何根据PictureValidation表属性确定此验证?

qnyhuwrf

qnyhuwrf1#

这个宝石似乎有一个新的功能,lets the options be passed as procs
自述文件有这样的例子:

validates :proc_files, limit: { max: -> (record) { record.admin? ? 100 : 10 } }

字符串
因此,如果模型是基于父记录构建的,因此设置了shop_id,我们可以插值,您应该能够执行以下操作:

validates :file, 
  attached: true, 
  size: { 
   less_than: ->(record){ record.shop.size_less_than }, 
   message: t('is too large') 
  }

相关问题