我有一个模型:
has_and_belongs_to_many :users
如何验证模型中模型中至少有一个用户?我试过了:
validates_presence_of :users
但这似乎没有给我我想要的东西......
答案 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 }