2011-10-23 9 views
8

Me gustaría limitar el número de objetos modelo que un usuario puede crear. Lo he intentado a continuación, pero no está funcionando. Entiendo que algunos cambios han sucedido en Rails 3.1 y no estoy seguro de cómo lograr esto ahora.Rails 3.1 limit user created objects

class User < ActiveRecord::Base 
    has_many :things, :limit => 5, :dependent => :destroy # This doesn't work 
end 

class Things <ActiveRecord::Base 
    belongs_to :user 
end 

Respuesta

14

intentar algo como esto:

class User < ActiveRecord::Base 
    has_many :things 
end 

class Things <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 

Editar: actualizado para Rails 3

+1

Estoy usando Rails 3.1 y obtengo el "método indefinido' validate_on_create 'para # " – user892583

+0

Vea la edición anterior ... –

+0

¡Eso sí funcionó! ¡muchas gracias! – user892583

3

No funcionó en los carriles 3.2.1. Count siempre es igual a 0. Lo he reemplazado con self.user.things.size y ahora funciona.