最好的方式來解釋就是我要問的是:用戶可以有很多「富」,但只有一個按「條」在所有腦幹
,因爲他們喜歡的用戶可以有許多富, 可以存在儘可能多的酒吧,如需要, 但是用戶每條只能有一個foo。
如何在模型中執行此操作?
因爲我在控制器中有一個檢查,但顯然這不是一個好主意,因爲這是一個模型約束,應該在模型上,而不是在控制器中。
最好的方式來解釋就是我要問的是:用戶可以有很多「富」,但只有一個按「條」在所有腦幹
,因爲他們喜歡的用戶可以有許多富, 可以存在儘可能多的酒吧,如需要, 但是用戶每條只能有一個foo。
如何在模型中執行此操作?
因爲我在控制器中有一個檢查,但顯然這不是一個好主意,因爲這是一個模型約束,應該在模型上,而不是在控制器中。
給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設爲您驗證之前,否則,你得到零誤差
但約束幾乎強制實施「每另一個人」。
這樣的:
class User < ActiveRecord::Base
has_many :bar
...
end
class Bar < ActiveRecord::Base
belongs_to :user
has_one :foo
...
end
你會像'User.bar.foo'那樣訪問它嗎? – user2733307
不是我所追求的,而是以任何方式感謝,我感謝你的幫助,我會稍後發佈答案。 – user2733307
由於我無法編輯,我會在這裏發佈,我有一個答案,但我不能發佈它,需要等待8個小時,我會張貼一個答案明天,因爲我沒有訪問互聯網在家的時刻 – user2733307