2014-11-13 51 views
1

這個錯誤可能是關於什麼的?我定義年齡我的帳戶型號:參數錯誤:無效日期

def age 
    birthday = DateTime.new(year_Of_Birth.to_i, month_Of_Birth.to_i, day_Of_Birth.to_i) 
    self.age = ((DateTime.now - birthday)/365.25).to_i 
    end 

在我看來,我得到以下錯誤:

引發ArgumentError - 在以下行無效日期:

<dd><%= @account.age %></dd> 

謝謝提前。

+0

你確定所有'year_Of_Birth','month_Of_Birth'和'day_Of_Birth'都是非零值嗎? – Brennan

+0

是的,因爲在模型中,我驗證了它們的存在是正確的 – pMpC

+0

您是否嘗試過在控制檯中測試它? – doz87

回答

1

嘗試在你的Rails應用程序控制臺來進行測試:

birthday = DateTime.new(1991,4,2)  => Tue, 02 Apr 1991 00:00:00 +0000 
DateTime.now - birthday     => (149073456141953/17280000000) 
(DateTime.now - birthday)/365.25  => 23.61926437561592 
((DateTime.now - birtday)/365.25).to_i => 23 

這對我的作品。檢查你正在設置的參數。

+0

我得到了和你一樣的結果,除了「DateTime.now - birthday」,我得到了:(745374204810193543/86400000000000) – pMpC

1

我幾乎可以肯定你傳遞的參數(year_Of_Birth.to_i,month_Of_Birth.to_i,day_Of_Birth.to_i)有什麼問題,調試它們並向我們顯示值,或者如果你願意,你可以試試這個趕上一些具體的錯誤:

begin 
birthday = DateTime.new(year_Of_Birth.to_i, month_Of_Birth.to_i, day_Of_Birth.to_i) 
self.age = ((DateTime.now - birthday)/365.25).to_i 
rescue ArgumentError 
#your logic 
end 
+0

我這樣做了,它將移回另一個空字段的用戶 – pMpC