Ответ 1
Я бы написал специальную проверку:
validate :has_users?
def has_users?
errors.add_to_base "Model must have some users." if self.users.blank?
end
Это сделает именно это.
У меня есть модель с:
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
Это сделает именно это.
В рельсах 4 вы можете просто сделать
validates :users, presence: true
В Rails 3.2.x:
validate :has_users?
def has_users?
errors.add(:base, 'Error message') if self.users.blank?
end
Джош Суссер написал плагин, который добавляет метод validates_existence_of
, который делает то, что вы хотите. Это гарантирует, что внешний ключ ссылается на существующую запись.
Try:
validates :users, :length => { :minimum => 1 }