2011-10-23 4 views
8

Vorrei limitare il numero di oggetti modello che un utente può creare. Ho provato il sotto ma non funziona. Comprendo che alcuni cambiamenti sono avvenuti nei binari 3.1 e non sono sicuro di come farlo ora.Rails 3.1 limite utente creato oggetti

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

class Things <ActiveRecord::Base 
    belongs_to :user 
end 

risposta

14

provare qualcosa di simile:

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 

Edit: aggiornamento per Rails 3

+1

Sto usando Rails 3.1 e ottenere "metodo non definito' validate_on_create 'per # " – user892583

+0

Vedere la modifica sopra .. –

+0

Questo ha fatto il trucco! molte grazie! – user892583

3

Non ha funzionato on Rails 3.2.1. Il conteggio è sempre uguale a 0. L'ho sostituito con self.user.things.size e ora funziona.