2012-03-13 5 views
4

Je cherche à limiter mes utilisateurs de poster plus de deux fois par jour et ne pas avoir plus de 5 messages par semaine. J'ai un modèle/contrôleur d'utilisateurs et de poteaux.RoR 3 Limiter les utilisateurs à 2 messages par jour

J'ai regardé ces questions mais elles ne sont pas tout à fait ce que je cherche.

Rails 3.1 limit user created objects

How do I validate a time in Rails? Limiting a user to post once a day

Erreur @ 20:44 13/03/2012 avec le code de KandadaBoggu

NoMethodError in PostsController#create 

undefined method `beginnning_of_day' for 2012-03-13 20:36:11 +0000:Time 
+0

ressemble « Rails 3.1 limiter les objets créés par l'utilisateur "répond parfaitement à votre question. Qu'est-ce qui est différent de ce que vous demandez? –

+1

Pouvez-vous partager du code que vous avez déjà essayé? –

+0

J'ai essayé celui-là et il ne me laisse que 5 messages au total. Comment est-ce que je limiterais les poteaux par jour et semaine, au lieu de juste un total? – Steve

Répondre

16

Essayez ceci:

class User 
    has_many :posts do 

    def today 
     where(:created_at => (Time.zone.now.beginning_of_day..Time.zone.now)) 
    end 

    def this_week 
     where(:created_at => (Time.zone.now.beginning_of_week..Time.zone.now)) 
    end 
    end  
end 


class Post 
    belongs_to :user 

    validate :user_quota, :on => :create 

private 
    def user_quota 
    if user.posts.today.count >= 2 
    errors.add(:base, "Exceeds daily limit") 
    elsif user.posts.this_week.count >= 5 
    errors.add(:base, "Exceeds weekly limit") 
    end 
    end 

end 
+0

Merci KandadaBoggu. J'ai ajouté votre code et redémarré le serveur de rails et maintenant quand je poste, je reçois l'erreur affichée ci-dessus – Steve

+0

Il y avait une faute de frappe dans ma réponse. Essayez maintenant. –

+0

Merci KandadaBoggu, cette fois j'obtiens cette erreur "méthode non définie' Time 'pour 2012-03-13 21:19:00 +0000: Temps " – Steve

Questions connexes