Ruby on rails Rails—允许用户在特定时间范围内只执行几次某些操作
我有Rails api,我使用它从移动应用程序上传照片。有没有一种方法可以从Rails后端设置一个计时器,比如一个用户一小时只上传两次,另一个用户一天只上传两次?我对它如何从后端工作的逻辑有点困惑,因为我不想从前端工作。任何建议都将不胜感激。谢谢 简单。只需检查用户在分配的时间范围内创建了多少条记录。假设您有以下关联:Ruby on rails Rails—允许用户在特定时间范围内只执行几次某些操作,ruby-on-rails,api,ruby-on-rails-5,backend,Ruby On Rails,Api,Ruby On Rails 5,Backend,我有Rails api,我使用它从移动应用程序上传照片。有没有一种方法可以从Rails后端设置一个计时器,比如一个用户一小时只上传两次,另一个用户一天只上传两次?我对它如何从后端工作的逻辑有点困惑,因为我不想从前端工作。任何建议都将不胜感激。谢谢 简单。只需检查用户在分配的时间范围内创建了多少条记录。假设您有以下关联: class User has_many :photos end class Photo belongs_to :user end 以及返回经过身份验证的用户的curr
class User
has_many :photos
end
class Photo
belongs_to :user
end
以及返回经过身份验证的用户的current_user
方法
要基于时间范围进行查询,请使用:
def创建
@photo=当前用户。照片。新建(照片参数)
除非当前用户.photos.where(创建时间:(1.hour.ago..Time.now)).count您应该在表中设置两个字段,类似于上载\u count:integer
和上次上载\u时间:datetime
。根据用户上传的照片更新2个字段的值,上传前检查上次上传的时间和上传计数,如果为false than show error,如果在24小时后更新,您可以使用cron作业,请随时检查gem
了解更多信息您不需要上次上传的时间字段。在每个模型
表中已经有一个名为updated\u at
的字段,实际上只有created\u at
字段就足够了。使用@Vishal建议的cron选项卡是一个非常复杂的解决方案,可以用SQL处理一个简单的问题。每次更改模型的任何字段时,
更新的都会更新,只有在上传任何文件时,我们才需要更新上次上传的。并非所有field@max,你知道他的系统是如何处理数据库的吗?你没有提供任何关于谁得到什么上传限制的启发的细节,但一般方法是相同的。
def create
@photo = current_user.photos.new(photo_params)
unless current_user.photos.where(created_at: (1.hour.ago..Time.now)).count <= 2
@photo.errors.add(:base, 'You have reached the upload limit')
end
# ...
end