request.env["HTTP_X_FORWARDED_FOR"] || request.remote_ip
これで取れると書いてあります。
しかし、HTTP_X_FORWARDED_FORは、カンマ区切りで複数のIPが帰ってきてしまうので、使い勝手よくありません。
request.remote_ipも、いくつかのIP取得のメソッドの集合のようで、HTTP_X_FORWARDED_FORを含んでおり、カンマ区切りで帰ってくる可能性大。
そういうわけで、こっちを使うほうがいいかも。
request.env["HTTP_X_FORWARDED_FOR"].split(",")[0] || request.remote_ip
メモ。