2013-09-24 36 views
-1

最好的方式來解釋就是我要問的是:用戶可以有很多「富」,但只有一個按「條」在所有腦幹

,因爲他們喜歡的用戶可以有許多富, 可以存在儘可能多的酒吧,如需要, 但是用戶每條只能有一個foo。

如何在模型中執行此操作?

因爲我在控制器中有一個檢查,但顯然這不是一個好主意,因爲這是一個模型約束,應該在模型上,而不是在控制器中。

回答

0

給foo的模型添加:

before_validation :set_bar 
validates :user_id, uniqueness: { scope: :bar_id,message: "Only one foo per bar please" } 

def set_bar 
    self.bar ||= bar.current 
    true 
end 

它通過檢查與bar_id對鏈接欄條目的範圍USER_ID,以檢查是否是有聯繫他們所有,如果有一個,那麼用戶有一個'富'特定的'酒吧',所以新的條目將不會創建(它會出錯)

至少,這是我的理解,也許s一個有更多理解的人可以更好地解釋它然後我,但它確實是我想要它做的。

你必須確保該bar_id設爲您驗證之前,否則,你得到零誤差

但約束幾乎強制實施「每另一個人」。

0

這樣的:

class User < ActiveRecord::Base 

has_many :bar 

... 

end 

class Bar < ActiveRecord::Base 

belongs_to :user 
has_one :foo 

... 

end 
+0

你會像'User.bar.foo'那樣訪問它嗎? – user2733307

+0

不是我所追求的,而是以任何方式感謝,我感謝你的幫助,我會稍後發佈答案。 – user2733307

+0

由於我無法編輯,我會在這裏發佈,我有一個答案,但我不能發佈它,需要等待8個小時,我會張貼一個答案明天,因爲我沒有訪問互聯網在家的時刻 – user2733307

相關問題