2015-10-01 144 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