проверить хотя бы один в has_and_belongs_to_many - PullRequest
21 голосов
/ 04 июня 2009

У меня есть модель с:

has_and_belongs_to_many :users

Как проверить, что в модели есть хотя бы один пользователь? Я попробовал:

validates_presence_of :users

Но, похоже, это не дает мне того, чего я хочу ...

Ответы [ 5 ]

32 голосов
/ 04 июня 2009

Я бы написал пользовательскую проверку:

validate :has_users?

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

Это сделало бы именно это.

Примечание в рельсах 3+, которые вы должны использовать:

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

В rails 4+ есть встроенный ярлык, поэтому вы можете просто сделать:

validates :users, presence: true
29 голосов
/ 20 октября 2014

В рельсах 4 вы можете просто сделать

validates :users, presence: true
3 голосов
/ 31 мая 2013

In Rails 3.2.x:

validate :has_users?

def has_users?
  errors.add(:base, 'Error message') if self.users.blank?
end
1 голос
/ 15 апреля 2015

Попробуйте:

validates :users, :length => { :minimum => 1 }
1 голос
/ 04 июня 2009

Джош Сассер написал плагин , который добавляет validates_existence_of метод, который делает то, что вы хотите. Это гарантирует, что внешний ключ ссылается на существующую запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...