Rails - 允许用户在特定时间范围内仅执行一些操作

时间:2018-01-10 08:24:03

标签: ruby-on-rails api ruby-on-rails-5 backend

我有Rails api,我用它来上传移动应用中的照片。有没有办法从Rails后端设置像计时器这样的东西,让一个用户一天只上传两次和/或一天两次上传另一个用户?因为我不想从前端做到这一点,所以我对后端如何工作的逻辑感到有些困惑。任何建议表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

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

class User
  has_many :photos
end

class Photo
  belongs_to :user
end

返回经过身份验证的用户的current_user方法。

要根据时间范围进行查询,请使用range

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

稍后当您重构时,您可以将其作为custom validation移动到模型中。