2012-10-06 70 views
0

我有這樣如何設置的獨特屬性模型中的行

class Competitor < ActiveRecord::Base 
    belongs_to :admin_user 
    has_many :companies 
    attr_accessible :admin_user_id, :c1, :c2, :c3, :c4, :c5 
    validates :admin_user_id, :presence => true 
    validates_uniqueness_of :admin_user_id, :message => "This user has yet a competitors list" 

end 

C1,C2模型的競爭對手,..是公司的ID。從下拉列表中選擇。我如何驗證行的唯一性? (即管理員用戶不可能有兩個或更多等於公司,但他們可以是空的)。

回答

1

你可以編寫自己的驗證方法來執行此操作。

class Competitor < ActiveRecord::Base 
    belongs_to :admin_user 
    has_many :companies 
    attr_accessible :admin_user_id, :c1, :c2, :c3, :c4, :c5 
    validates :admin_user_id, :presence => true 
    validates_uniqueness_of :admin_user_id, :message => "This user has yet a competitors list" 

    validate :check_companies 

    def check_companies 
    #[do your checks] 
    end 

end 
+0

感謝您的答覆,然後在check_companies這樣做:如果c1 == c2在返回false(ECC ..)......否則真的吧? (我必須重新布爾值? - >「驗證」只接受布爾值?) – damoiser

+0

準確!你真的需要幫助嗎? ;) – MrYoshiji

+0

也許有點;)謝謝! – damoiser