Утвердить хотя бы один элемент has_and_belongs_to_many
У меня есть модель с:
has_and_belongs_to_many :users
Как проверить, что модель имеет хотя бы одного пользователя в модели? Я пробовал:
validates_presence_of :users
Но это, кажется, не дает мне то, что я хочу...
Ответ 1
Я бы написал специальную проверку:
validate :has_users?
def has_users?
errors.add_to_base "Model must have some users." if self.users.blank?
end
Это сделает именно это.
Ответ 2
В рельсах 4 вы можете просто сделать
validates :users, presence: true
Ответ 3
В Rails 3.2.x:
validate :has_users?
def has_users?
errors.add(:base, 'Error message') if self.users.blank?
end
Ответ 4
Джош Суссер написал плагин, который добавляет метод validates_existence_of, который делает то, что вы хотите. Это гарантирует, что внешний ключ ссылается на существующую запись.