我這個模型:Rails的驗證虛擬屬性
class Bunny < ActiveRecord::Base
attr_accessor :number
validates_presence_of :number
validates_numericality_of :number
end
每當我提交表單創建這個模型我得到以下錯誤:
未定義的方法`number_before_type_cast」爲#<兔子:0x103624338 >
我這個模型:Rails的驗證虛擬屬性
class Bunny < ActiveRecord::Base
attr_accessor :number
validates_presence_of :number
validates_numericality_of :number
end
每當我提交表單創建這個模型我得到以下錯誤:
未定義的方法`number_before_type_cast」爲#<兔子:0x103624338 >
我加入這個方法我的小兔子模型解決了這一問題:
def number_before_type_cast
number
end
我不喜歡它,但我想它會工作,直到有人張貼一個更好的解決方案。
Rails在模型中爲每個字段生成FIELDNAME_before_type_cast
。它將表單中的值存儲爲字符串,然後在此情況下轉換(轉換)爲數字(例如,它可能是日期)。此轉換在保存之前發生,但在驗證之後發生。
因此,在執行強制轉換之前進行驗證時,必須使用「before type cast」值來獲取該值。由於這不是針對您的屬性生成的,因此失敗。
我明白了...那是一個很好的解釋...有沒有很好的解決方案? – tybro0103 2010-10-12 16:39:33
是的,我沒有更好的主意。 – Matt 2010-10-13 08:07:52