Commit 878c7e32
Changed files (3)
app
models
app/models/user_session.rb
@@ -13,6 +13,7 @@ class UserSession < ActiveRecord::Base
self.accessed_at = Time.now
self.ip = request.ip
self.user_agent = request.user_agent
+ apply_geo_location_information_for(request)
if save
{
value: key,
@@ -36,4 +37,13 @@ class UserSession < ActiveRecord::Base
def set_unique_key
self.key = SecureRandom.urlsafe_base64(32)
end
+
+ def apply_geo_location_information_for(request)
+ city = GeoIP.new('config/GeoLiteCity.dat').city(request.ip)
+ return if city.nil?
+ self.latitude = city.latitude
+ self.longitude = city.longitude
+ self.city = city.city_name
+ self.country = city.country_name
+ end
end
db/migrate/20140909030826_add_geo_location_to_user_sessions.rb
@@ -0,0 +1,8 @@
+class AddGeoLocationToUserSessions < ActiveRecord::Migration
+ def change
+ add_column :user_sessions, :latitude, :float
+ add_column :user_sessions, :longitude, :float
+ add_column :user_sessions, :city, :string
+ add_column :user_sessions, :country, :string
+ end
+end
db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20140822032550) do
+ActiveRecord::Schema.define(version: 20140909030826) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -145,8 +145,6 @@ ActiveRecord::Schema.define(version: 20140822032550) do
t.integer "taggings_count", default: 0
end
- add_index "tags", ["name"], name: "index_tags_on_name", unique: true, using: :btree
-
create_table "tutorials", force: true do |t|
t.string "heading"
t.text "description"
@@ -170,6 +168,10 @@ ActiveRecord::Schema.define(version: 20140822032550) do
t.string "user_agent"
t.datetime "accessed_at"
t.datetime "revoked_at"
+ t.float "latitude"
+ t.float "longitude"
+ t.string "city"
+ t.string "country"
end
add_index "user_sessions", ["accessed_at"], name: "index_user_sessions_on_accessed_at", using: :btree