2011-05-17 42 views
1

我的理解,按照導軌導向,是應該確保相關的記錄是保存之前有效。例如:理解validates_associated的validates_associated

class ForumPost < AR:Base 
    has_many :replies 
end 

class ForumPostReply < AR:Base 
    validates_length_of :content, :minimum => 20 
end 

單元測試:

forum_post = Factory.create(:forum_post) 
forum_post.replies.build(:content => 'some content') #content too short, not valid 
forum_post.save 
forum_post.errors.should be_empty #empty because reply was not expected to be validated 

應該期待這個保存失敗鑑於我沒有指定validates_associated:回覆我ForumPost模式?它似乎保存得很好,這不是我所期望的,因爲我沒有指定相關的驗證。

因此,如果模型這樣的行爲,不validates_associated指定的,那麼是什麼validates_associated辦?

+0

聽起來你自相矛盾。你不指定'validates_associated:答案',即使它是一個無效的子實體,它也可以很好地保存。有什麼問題? – Jimmy 2011-05-17 18:43:47

+0

這不會是我第一次矛盾自己。如果在使用out validates_associated進行保存時檢查驗證,那麼validates_associated會執行什麼操作? – 2011-05-18 19:56:41

回答

2

想我會這樣移動到答案。你說,

「我應該想到這保存到失敗鑑於我沒有在我的ForumPost模型指定validates_associated :replies?」

不,你應該期望它來保存,因爲你指定validates_associated :replies

「看來,以節省就好這不是我所預期的那樣我沒有指定只會驗證相關的。」

它似乎保存得很好,因爲它不是驗證關聯,因爲你沒有指定它。