我有一個模式叫用戶提供:Rails 3中,HAS_ONE belongs_to的問題
has_one :etho
和被叫Etho與模型:
belongs_to :user
我在創建方法得到了構建用戶:
@user.build_etho
由於某種原因,當我登錄時,我仍然能夠創建超過1個etho!用戶應該只有1個etho,不應該創建超過1!爲什麼這不起作用?
我有一個模式叫用戶提供:Rails 3中,HAS_ONE belongs_to的問題
has_one :etho
和被叫Etho與模型:
belongs_to :user
我在創建方法得到了構建用戶:
@user.build_etho
由於某種原因,當我登錄時,我仍然能夠創建超過1個etho!用戶應該只有1個etho,不應該創建超過1!爲什麼這不起作用?
我想你誤會build_etho做什麼 - 根據文檔
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
「build_association(屬性= {}) 返回已實例化的屬性,並通過外鍵鏈接到該對象,但尚未保存的相關類型的新對象「。
也就是說,每次調用build_etho時,都會創建一個新的Etho對象(構建,即,尚未保存在數據庫中) - 用戶將始終鏈接到一個,可能是最後創建的,但調用build_etho不保證只有一個是從你的用戶對象創建的!
你究竟想要做什麼?
您參考id
欄應該是在你的users
表中,可以確認嗎?
這意味着,在您的用戶遷移,你應該有
t.references :ethos
如何,用戶只能有1個設置,我試圖讓它這樣用戶只能有1個etho。不知道我是否知道如何做到這一點。我想讓它成爲一個用戶,他們已經有了一個etho(僅限1個),然後他們會更新它。沒有創造他們的一部分。 – 2012-07-23 23:37:45
致電前'@ user.build_etho'首先檢查是否已經etho關聯(存在?)像'如果@ user.etho.nil? @ user.build_etho end'如果它已創建,則跳過構建關聯的實體 – 2012-07-24 13:38:25