http://shepherdmaster.hateblo.jp/entry/2016/08/21/000115 でも紹介しましたが、 https://github.com/kickstarter/rack-attack という便利なgemがあります。
n秒間にn回アクセスされたらアクセスを弾くThrottles機能を使う場合、 IP単位でアクセス数を数える場合もありますが、ユーザ単位で数えたい場合もあると思います。
そういう場合は以下のようにsessionに入っている(だろう)ユーザidを返せばよいです。
class Rack::Attack throttle('req/ip', :limit => 10, :period => 10.second) do |req| req.session[:user_id] end end