ActiveRecord验证:显示列名以外的内容

时间:2009-09-09 13:44:26

标签: ruby-on-rails validation

我认为这很容易,而且我遗漏了一些明显的东西。我正在连接到具有列dblOrderQty的旧数据库。我正在验证它:

validates_numericality_of :dblOrderQty, :greater_than => 0

当然,这表示“Dblorderqty必须大于0”。我宁愿说“数量必须大于0”,但我找不到修改邮件中列名的方法。

4 个答案:

答案 0 :(得分:2)

我认为通过在config / locales / en.yml中添加以下内容来使用本地化(如Larry K暗示的那样)更清晰:

en:
  activerecord:
    attributes:
      model_name:
        dblOrderQty: "Quantity"

我不确定CamelCase是否会混淆它。

答案 1 :(得分:1)

不确定这是否是最佳方式,但它有效:)

class ModelName < ActiveRecord::Base
  HUMANIZED_ATTRIBUTES = {
    :dblOrderQty => "Order Quantity"
  }

  validates_numericality_of :dblOrderQty, :greater_than => 0

  def self.human_attribute_name(attr)
    HUMANIZED_ATTRIBUTES[attr.to_sym] || super
  end
end

答案 2 :(得分:1)

我没有对此进行过测试,但您可能会像这样覆盖模型中的默认属性访问器

def quantity
  read_attribute(:dblOrderQty)
end

然后参考覆盖的属性。同样,请参阅docs

答案 3 :(得分:0)

我使用Bob Silva的error_messages_for插件。 http://agilewebdevelopment.com/plugins/enhanced_activerecord_errors

它包括传递哈希以更改错误消息中某些或所有模型属性的名称的功能。这是在视图(或帮助程序)中完成的。覆盖属性名称对于本地化应用程序也很重要。