2012-11-13 60 views
4

我正在編寫一個Ruby on Rails應用程序,它有兩個模型 - User和Farm。如果用戶的農民字段設置爲true,則該用戶被認爲是農民。但是,農民沒有單獨的課程。ActiveRecord中零或一個關聯

用戶可能有一個農場,或者根本沒有農場。 (我相信這被稱爲零或一個關係)。如果我把:

has_one :farm 
在用戶模式

belongs_to :user 

在農場模型,這將創建用戶和農場之間的一個一對一的關係,意味着每個用戶都有一個農場。如果我這樣做了,每個用戶都會有一個農場,並且這沒有什麼意義,因爲有些用戶不能擁有一個農場。

總之,我想要的是一個用戶有一個農場,只要他們的農民布爾值設置爲true。否則,這種關係不應該存在。他們是如何使用ActiveRecord來實現這一目標的方式?

+0

你可以使用驗證? http://guides.rubyonrails.org/active_record_validations_callbacks.html#validations-overview – MrYoshiji

+0

驗證是要走的路 –

+0

所以我應該創建農場作爲一個常規字段,而不是使用任何關聯助手?然後只有在驗證「farmer == true」時才創建農場? –

回答