0

我有一个模型 user_input.rb

class UserInput
  include ActiveModel::Validations
  include ActiveModel::Conversion
  extend ActiveModel::Naming

  # attributes
  attr_accessor :patientNum, :recordLimit
  validates_presence_of :patientNum

  validates :patientNum, :numericality => { :only_integer => true, :greater_than_or_equal_to => 0}

  def initialize(attributes={})
    attributes.each do |name, value|
      send("#{name}=",value)
    end
  end

  def persisted?
    false
  end
end

当我收到错误消息时,我会收到类似的消息

“Patientnum 不是数字”

我想将 Patientnum 更改为“Patient Number”

我当前的 en.yml 文件是

en:
  hello: "Hello world"

  errors:
    format: "%{message}"

  user_input:
    attributes:
      patientNum: "Patient Number"

这对我来说很棘手,因为我的模型不是 ActiveRecord::Base

4

2 回答 2

1
  attributes:
    patientNum: "Patient ID"
于 2013-06-26T13:22:30.257 回答
0

ActiveModel::Validations用于ActiveModel::Translation生成错误消息中使用的人类可读属性名称。

对于您的类和属性名称,它将按以下顺序查找以下 I18n 键:

  1. activemodel.attributes.user_input.patientNum
  2. attributes.patientNum

如果没有找到,它将回退到默认值,即'patientNum'.humanize.

有关详细信息,请参阅实现ActiveModel::Translation#human_attribute_name

于 2013-06-26T13:44:37.173 回答