2012-10-06 41 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