2015-10-01 115 views
1

我想實現多態關聯的驗證,我只希望它在某種類型上觸發。哪個是用戶。驗證多態關聯的唯一性

我想是這樣的:

validates :room_id, uniqueness: { scope: tokenable_id if tokenable type is User } 

我怎麼去這樣做。另一種是客戶。我想讓這個機會成爲幾個。

回答

0

我認爲你可以使用Conditional Validation

有時它纔有意義,只有當一個給定的 謂詞是滿足驗證的對象。您可以通過使用:if和:來做到這一點,除非可以使用符號,字符串,Proc或數組。當您想要指定何時應該發生驗證 時,您可以使用:if選項。如果你想指定何時驗證不應該發生,那麼你可以使用:unless選項。

5.1使用符號用:if和:除非

您可以關聯的:if和:除非有相應的方法的名稱會馬上叫一個符號 選項 驗證發生之前。這是最常用的選項。

class Order < ActiveRecord::Base 
    validates :room_id, uniqueness: { scope: :tokenable_id }, if: :is_right_type? 

    # or maybe this will work 
    validates :room_id, uniqueness: { scope: :tokenable_id }, if: :user? 

    def is_right_type? 
    type == "user" 
    end 
end 
+0

請注意,您也可以給':if'字符串選項,例如, 'id:「type =='user'」' – eirikir