Sie könnten eine Rack Middleware verwenden, aber Sie müssen sie zuerst auf Github umleiten.
https://github.com/roja/rack-geo
Im Moment dieses Projekt, das Sie Stadt und Organisation Namen auf der IP-Adresse des Computers, der die Anforderung basiert gibt - man muss auch Country Code.
Man könnte es mit dem Code hinzufügen relativ leicht hier: https://github.com/roja/rack-geo/blob/master/lib/rack/geo.rb
Sie dann einen Rack-Umgebungsvariable einstellen könnte, um anzuzeigen, wenn die Anforderung aus den USA ist in der Call-Methode:
Rack::Request.new(env)["born"] = "...in the USA"
Fügen Sie es zu Ihrer Konfigurationsdatei hinzu:
Und dann in Ihrem Controller können Sie testen, ob die Anfrage diese Umgebungsvariable ordnungsgemäß eingestellt hat und Umleitung auf einen ‚bedauern, dass Sie aus den USA sein muss‘ Seite:
if params['born'] == "...in the USA"
redirect_to "/not_from_round_here"
end
Beachten Sie, dass die IP-Adresse Sniffing fehlbar ist. Ich nehme oft Züge in Großbritannien und lande mit Google auf Deutsch.
Dies kann nicht zuverlässig durchgeführt werden. – SLaks
Wenn für diese Produkte ein physischer Versand erforderlich ist, ist es einfach, sich das Land anzusehen, in das der Benutzer das Produkt liefern möchte. –
Interessante Frage. Aber was ist, wenn ein US-Bürger vorübergehend außerhalb der USA reist? –