RoR 3将用户限制为每天2个帖子 [英] RoR 3 Limiting users to 2 posts per day

查看:61
本文介绍了RoR 3将用户限制为每天2个帖子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找限制用户每天发布两次以上并且每周发布不超过5条的方法.我有一个用户,并发布了模型/控制器.

我一直在寻找这些问题,但它们并不是我所寻找的.

Rails 3.1限制用户创建的对象

解决方案

尝试一下:

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

I am looking for away to limit my users from posting more than twice per day and have no more than 5 posts per week. I have a users and posts model/controller.

I have been looking at these questions but they are not quite what I am looking for.

Rails 3.1 limit user created objects

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

Error @ 20:44 13/03/2012 with the code from KandadaBoggu

NoMethodError in PostsController#create

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

解决方案

Try this:

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

这篇关于RoR 3将用户限制为每天2个帖子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆