2017-09-27 2 views
0

Dans mon application, j'ai des pierres précieuses devise 4.2.0 & geocoder 1.4.3 & modèle User.Rails - Get pays utilisateur Inscrivez-vous avec géocodage & Gems Devise

Dans le modèle User, j'ai ajouté des colonnes country, latitude & longitude.

Ce que je veux réaliser est d'obtenir le pays des utilisateurs lors de leur inscription, en utilisant current_sign_in_ip.

ps: depuis dans le développement de mon adresse IP devient :: 1 J'ai ajouté :my_ip colonne à la table des utilisateurs afin que je puisse insérer IP manuellement.

J'ai essayé:

class User < ActiveRecord::Base 

    geocoded_by :my_ip 
    after_validation :geocode 

Mais ce ne soit pas le pays et la longitude latitude & sont vides.

J'ai aussi essayé:

class User < ActiveRecord::Base 

    geocoded_by :country 
    after_validation :geocode 

Avec cette option, j'ai ajouté le nom du pays manuellement et cette latitude ajouté & longitude à la table des utilisateurs.

Alors je me demande comment puis-je obtenir le pays des utilisateurs avec current_sign_in_ip quand ils s'inscrivent?

Répondre

0

essayer ci-dessous pour obtenir le code pays:

Gemfile

gem 'geocoder' 

app/modèle/user.rb

class User < ActiveRecord::Base 
    after_save do 
    self.country = request.ip 
    end 
end 
+0

Merci, @ puneet18. Dois-je seulement ajouter 'after_save'? Ai-je besoin d'ajouter 'geocoded_by'? À cause de maintenant. Il ne m'a pas donné le nom du pays. – Rubioli

+0

En production lorsque je crée un utilisateur, j'obtiens cette erreur: ** variable locale non définie ou méthode 'request 'pour # Vouliez-vous dire? exiger** – Rubioli