验证的至少一个has_and_belongs_to_many

验证的至少一个has_and_belongs_to_many

问题描述:

我有一个模型:验证的至少一个has_and_belongs_to_many

has_and_belongs_to_many :users 

如何验证,该模型在模型中的至少一个用户?我想:

validates_presence_of :users 

但是,这似乎并没有给我我想要的......

我会写自定义的验证:

validate :has_users? 

def has_users? 
    errors.add_to_base "Model must have some users." if self.users.blank? 
end 

这将这样做。

乔希Susser写了plugin,增加了一个validates_existence_of方法你想要做什么。它确保外键引用存在的记录。

+0

,看起来很有希望,但它没有工作: “无法验证:用户的存在,因为它不是belongs_to关联。”看起来它只适用于belongs_to ... – cmaughan 2009-06-04 12:44:23

+0

这是正确的。关联的另一端是什么? – 2009-06-04 12:57:18

在Rails 3.2.x中:

validate :has_users? 

def has_users? 
    errors.add(:base, 'Error message') if self.users.blank? 
end 

在轨道4,5你可以做

validates :users, presence: true 

尝试:

validates :users, :length => { :minimum => 1 }