【问题标题】:RoR 3 Limiting users to 2 posts per dayRoR 3 将用户限制为每天 2 个帖子
【发布时间】:2012-03-30 05:16:11
【问题描述】:

我正在设法限制我的用户每天发帖超过两次,并且每周发帖不超过 5 个。我有一个用户和帖子模型/控制器。

我一直在研究这些问题,但它们并不是我想要的。

Rails 3.1 limit user created objects

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

错误 @ 20:44 13/03/2012 来自 KandadaBoggu 的代码

NoMethodError in PostsController#create

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

【问题讨论】:

  • 看起来像“Rails 3.1 限制用户创建的对象”完美地回答了你的问题。你问的有什么不同?
  • 你能分享一些你已经尝试过的代码吗?
  • 我试过那个,它总共只能让我有 5 个帖子。我将如何限制每天和每周的帖子,而不仅仅是总数?
  • 我刚刚合并了两个链接中的代码,一个块在另一个块的下方。但这不是我想要的。
  • 您在beginnning_of_day 中多了一封n

标签: ruby-on-rails time limit


【解决方案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

【讨论】:

  • 感谢 KandadaBoggu。我已经添加了您的代码并重新启动了 rails 服务器,现在当我发布时,我收到了上面发布的错误
  • 我的回答有错字。立即尝试。
  • 感谢 KandadaBoggu,这次我收到此错误“未定义方法 `Time' for 2012-03-13 21:19:00 +0000:Time”
  • 虽然我修正了错字,但我引入了复制+粘贴错误。代码现在应该可以工作了。 PS:这些简单的语法错误应该可以自己修复。
  • 感谢 KandadaBoggu 的工作。我应该也发现了错字“nnn”今天是那些日子之一..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-27
  • 2018-11-15
  • 2023-03-25
  • 2014-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多