2011-04-04 63 views
2

我有兩個型號集驗證結社假mongoid

class Person 
    embeds_one :address 
end 

class Address 
    embedded_in :person 
    field :city 
    validates :city, :presence => true 
end 

現在,當我做

person.address = Address.new 

地址的驗證調用。但我不需要在我的情況下驗證,我也不能從地址中刪除:validates(因爲我稍後需要它)。我想要做一些像(:validate => false)。如果有人有想法,讓我知道!我正在使用mongoid-2.0.0。

回答

1

您可以使用

person.address = Address.create 

然後驗證是不是叫我相信。當您更新記錄並最終保存時,將調用驗證。 也可以使用類似

person.address = Address.new :addres => "Valid address" 

和驗證也不會失敗。

打開和關閉驗證對我來說似乎很奇怪,因爲這會導致數據庫中的地址無效......您可以更改驗證例程以接受空地址,如果這樣的地址是問題。

+1

它的ID不能正常工作,我嘗試了第一個選項,我得到這個錯誤「不允許訪問地址集合,因爲它是嵌入式文檔,請訪問集合從根文件中刪除「。我也嘗試了第二種選擇,但沒有奏效。其實我需要在保存最終地址之前保存一箇中間地址。這就是爲什麼我試圖關閉驗證。 – 2011-04-04 11:10:09

+0

在網上發現了你的錯誤很多次,它似乎是一個mongoid的問題,看到這個SO問題以及:http://stackoverflow.com/questions/5069315/how-to-fabricate-mongoid-document-with -embedded-document-using-fabrication – Veger 2011-04-04 14:25:39

+1

是的它是embeds_many,但我沒有找到與embeds_one錯誤....也嵌入的文件被保存,但錯誤仍然顯示。 – 2011-04-06 05:21:44

0

如何創建自定義地址驗證程序,並檢查它是否是新記錄。如果是的話,那麼它仍然有效的空郵件?