Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails—允许用户在特定时间范围内只执行几次某些操作_Ruby On Rails_Api_Ruby On Rails 5_Backend - Fatal编程技术网

Ruby on rails 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

我有Rails api,我使用它从移动应用程序上传照片。有没有一种方法可以从Rails后端设置一个计时器,比如一个用户一小时只上传两次,另一个用户一天只上传两次?我对它如何从后端工作的逻辑有点困惑,因为我不想从前端工作。任何建议都将不胜感激。谢谢

简单。只需检查用户在分配的时间范围内创建了多少条记录。假设您有以下关联:

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