Rails: Como limitar o número de itens na associação has_many (do pai)

Gostaria de limitar o número de itens em uma associação. Quero garantir que o Usuário não tenha mais do que X Things. Essa questão foi perguntado antes e a solução tinha a lógica na criança:

A solução oferecida (para problema semelhante):
class User < ActiveRecord::Base
  has_many :things, :dependent => :destroy
end

class Thing <ActiveRecord::Base
  belongs_to :user
  validate :thing_count_within_limit, :on => :create

  def thing_count_within_limit
    if self.user.things(:reload).count >= 5
      errors.add(:base, "Exceeded thing limit")
    end
  end
end

O codificado "5" é um problema. Meu limite muda com base no pai. A coleção de Coisas conhece seu limite em relação a um Usuário. No nosso caso, um gerente pode ajustar o limite (de itens) para cada usuário, portanto, o usuário deve limitar sua coleção de itens. Nóspoderi peça que o número_de_informática solicite o limite ao seu usuário:

if self.user.things(:reload).count >= self.user.thing_limit

Mas isso é muitodo utilizado introspecção de coisa. Várias chamadas para o usuário e, especialmente, que(:reload) são bandeiras vermelhas para mim.

Pensamentos em direção a uma solução mais apropriada:

Eu penseihas_many :things, :before_add => :limit_things funcionaria, mas devemos abrir uma exceção para pare a corrente. Isso me obriga a atualizar o things_controller para lidar com exceções em vez da convenção de trilhos deif valid? ouif save.

class User
  has_many :things, :before_add => limit_things

  private
  def limit_things
    if things.size >= thing_limit
      fail "Limited to #{thing_limit} things")
    end
  end
end
Este é o Rails. Se eu tiver que trabalhar duro, provavelmente estou fazendo algo errad

Para fazer isso, tenho que atualizar o modelo pai, o controlador da criança, E não posso seguir a convenção? Estou esquecendo de algo? Estou usando malhas_many, :before_add? Procurei um exemplo usando: before_add, mas não consegui encontrar nenhu

Pensei em mudar a validação para o Usuário, mas isso ocorre apenas no salvamento / atualização do Usuário. Não vejo uma maneira de usá-lo para impedir a adição de uma coisa.

Prefiro uma solução para o Rails 3 (se isso for importante para esse problema

questionAnswers(8)

yourAnswerToTheQuestion