首先,讓我說我是極其新新的Rails(玩弄它一兩次,但迫使我自己現在寫一個完整的項目,昨天開始)。驗證模型屬性大於另一個
我現在試圖驗證模型屬性(術語?)是否比另一個更大。這似乎是validates_numericality_of
與greater_than
選項的完美實例,但可惜的是,這會引發錯誤,告訴我greater_than expects a number, not a symbol
。如果我嘗試鍵入該符號.to_f
我收到undefined method
錯誤。
這是我最終做的,我很好奇是否有更好的方法。這只是一個控制項目發佈的簡單系統,我們只有大/小版本(單點),所以float在這裏感覺像是正確的決定。
class Project < ActiveRecord::Base
validates_numericality_of :current_release
validates_numericality_of :next_release
validate :next_release_is_greater
def next_release_is_greater
errors.add_to_base("Next release must be greater than current release") unless next_release.to_f > current_release.to_f
end
end
這工作 - 它傳遞相關的單元測試(以下爲您的觀賞樂趣),我只是好奇,如果有一個更簡單的方法 - 這是我可以嘗試其他方式。
相關的單元測試:
# Fixture data:
# PALS:
# name: PALS
# description: This is the PALS project
# current_release: 1.0
# next_release: 2.0
# project_category: 1
# user: 1
def test_release_is_future
project = Project.first(:conditions => {:name => 'PALS'})
project.current_release = 10.0
assert !project.save
project.current_release = 1.0
assert project.save
end
出色答卷,詳細的迴應 - 我需要的(加少許安慰)。 – 2009-12-22 16:05:11
很好的答案,當你有機會「greather_than」時,請修復拼寫錯誤。再次感謝。 – ghayes 2011-08-09 06:02:10
完成,謝謝。 – 2011-08-09 08:48:19