Проверить максимальное количество связанных объектов

У меня есть модель учетной записи и модель пользователя:

class Account < ActiveRecord::Base
  has_many :users
end

class User < ActiveRecord::Base
  belongs_to :account
end

Пользователи принадлежат учетной записи, а учетная запись имеет максимум пользователей (отличается для каждой учетной записи). Но как мне проверить, что этот максимум не был достигнут при добавлении новых пользователей в учетную запись?

Сначала я попытался добавить проверку для пользователя:

class User < ActiveRecord::Base
  belongs_to :account
  validate :validate_max_users_have_not_been_reached

  def validate_max_users_have_not_been_reached
    return unless account_id_changed? # nothing to validate
    errors.add_to_base("can not be added to this account since its user maximum have been reached") unless account.users.count < account.maximum_amount_of_users
  end
end

Но это работает, только если я добавляю по одному пользователю за раз.

Если я добавлю несколько пользователей через@account.update_attributes(:users_attributes => ...) он просто проходит напрямую, даже если есть место только для еще одного пользователя.

Update:

Просто чтобы уточнить: текущий метод проверки подтверждает, чтоaccount.users.count меньше чемaccount.maximum_amount_of_users, Так скажем, например, чтоaccount.users.count 9 иaccount.maximum_amount_of_users будет 10, тогда проверка пройдет, потому что 9 & lt; 10.

Проблема в том, что счетчик вернулся изaccount.users.count не будет увеличиваться, пока все пользователи не будут записаны в базу данных. Это означает, что добавление нескольких пользователей одновременно пройдет валидацию, поскольку количество пользователей будет одинаковым до тех пор, пока все они не будут проверены.

Таким образомaskegg указывает на то, должен ли я добавить проверку в модель учетной записи? И как это должно быть сделано?

Ответы на вопрос(2)

Ваш ответ на вопрос