2009-09-09 57 views
0

我認爲這非常簡單,而且我錯過了一些明顯的東西。我正在連接到具有列dblOrderQty的舊數據庫。我正在驗證它:ActiveRecord驗證:顯示列名以外的內容

validates_numericality_of :dblOrderQty, :greater_than => 0 

這當然,提出「Dblorderqty必須大於0」。我寧願說「數量必須大於0」,但我找不到修改郵件中列名的方法。

回答

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 

1

我沒有測試過這一點,但你可能會覆蓋默認的屬性訪問器模型中的這樣

def quantity 
    read_attribute(:dblOrderQty) 
end 

然後參考被覆蓋的屬性。一如既往,請參閱docs

2

我覺得這是清潔劑使用本地化(拉里ķ暗示)通過添加以下到配置/區域設置/ en.yml:

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

我不知道,如果駝峯會混淆它與否。