在has_and_belongs_to_many中验证至少一个

时间:2009-06-04 11:39:51

标签: ruby-on-rails activerecord model

我有一个模型:

has_and_belongs_to_many :users

如何验证模型中模型中至少有一个用户?我试过了:

validates_presence_of :users

但这似乎没有给我我想要的东西......

5 个答案:

答案 0 :(得分:32)

我会写自定义验证:

validate :has_users?

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

那就是那样做的。

注意在rails 3+中你必须使用:

  # rails 3+
  errors.add :base, "Model must have some users." if self.users.blank?

在rails 4+中有一个内置的快捷方式,所以你可以这样做:

validates :users, presence: true

答案 1 :(得分:29)

在rails 4中你可以做到

validates :users, presence: true

答案 2 :(得分:3)

在Rails 3.2.x中:

validate :has_users?

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

答案 3 :(得分:1)

Josh Susser写了一个plugin,它添加了一个validates_existence_of方法来完成你想要的工作。它确保外键引用存在的记录。

答案 4 :(得分:1)

尝试:

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