如何在模型文件中为变量指定文件类型?

How to specify file type for a variable, in the model file?

在我的一个模型文件中,我想为一个变量(称为 xml_file)指定它应该是一个 xml 文件。到目前为止我所尝试的生成了错误消息。

尝试 1

validates  :xml_file,         presence: true,
                              content_type: %w(application/xml)

rake test 这产生了错误 ArgumentError: Unknown validator: 'ContentTypeValidator'

尝试 2

VALID_XML_REGEX = %w(xml)
validates  :xml_file,         presence: true,
                              format: { with: VALID_XML_REGEX }

这在测试中产生了错误 ArgumentError: A regular expression or a proc or lambda must be supplied as :with

尝试 3:创建自己的方法

validates  :xml_file_format
private
def xml_file_format
  validates :xml_file, format: /.xml/
end

这也不起作用并产生了错误 ArgumentError: You need to supply at least one validation

因此,我的问题:如何指定变量'xml_file'应该是模型文件中的xml文件?

你似乎混淆了两件事:

  1. XML 文件
  2. XML 文件的路径

您正在验证 XML 文件的路径,该文件没有 content_type。 (AAMOF,XML 文件也没有 content_type,但这是一个单独的主题。)

根据Rails Guides,您可以使用:

format: { with: /\.xml\z/ }