2

我在模型中有一个方法是在上传之前检查一个是否是可疑附件,以防万一,如果他以 . 蝙蝠。和 。可执行程序 , 。源或。命令。

如果他的文件可疑,我想显示一条消息。我是葡萄牙人,所以我使用一个 translate 文件。

方法是:

def suspicious_attachment
  if ends_with? '.bat', '.com', '.exe', '.src', '.cmd'
    errors.add(:attachment_file_name, I18n.t('errors.messages.suspicious_attachment', :value => attachment.path[-4..-1]))
    errors.add_to_base(I18n.t('errors.messages.suspicious_attachment', :value => attachment.path[-4..-1]))
    errors.add(:attachment_file_name)
  end
end

哪个返回:

附件 附件文件名不允许上传。带附件的附件文件名无效 附件库不允许上传。和

我不想显示那些话:“附件附件文件名”和“附件库”。

我不明白为什么会出现这些词。

对不起我的英语不好。

谢谢

4

1 回答 1

4

显示这些额外的字符串是因为您在属性上添加了一条错误消息,而不是在基础上:

errors.add(:base, "some custom error message")

将显示如下消息:

“一些自定义错误消息”

而这

errors.add(:attribute, "other message")

将显示如下消息:

“属性”其他消息“


在您的情况下,使用 :base 添加您的错误:

def suspitious_attachment
  if ends_with? '.bat', '.com', '.exe', '.src', '.cmd'
    errors.add(:base, I18n.t('errors.messages.suspitious_attachment', :value => attachment.path[-4..-1]))
  end
end

或者,如果您想用消息翻译属性:

activerecords:
  attributes:
    your_model_name:
      attachment_file_name: "File"

并使用它来添加相应的消息:

def suspitious_attachment
  if ends_with? '.bat', '.com', '.exe', '.src', '.cmd'
    errors.add(:attachment_file_name, I18n.t('errors.messages.suspitious_attachment', :value => attachment.path[-4..-1]))
  end
end

应该显示如下错误:

“文件”不允许上传

于 2013-10-07T15:05:52.190 回答