1
當用戶登錄到網站時,我希望geocoder採用current_sign_in_ip並將其轉換爲可用的緯度:經度:我該如何做到這一點?設計after_sign_in使用地理編碼器和設計更新屬性
我的用戶模型 -
geocoded_by :current_sign_in_ip
after_validation :geocode, :if => :current_sign_in_ip_changed?
當用戶登錄到網站時,我希望geocoder採用current_sign_in_ip並將其轉換爲可用的緯度:經度:我該如何做到這一點?設計after_sign_in使用地理編碼器和設計更新屬性
我的用戶模型 -
geocoded_by :current_sign_in_ip
after_validation :geocode, :if => :current_sign_in_ip_changed?
爲了讓地理編碼記錄下來的經度和緯度。您需要將緯度和經度字段添加到您的數據庫表中。假設你使用users
表。
首先添加遷移
rails generate migration AddLatitudeLongitudeToUsers
修改遷移如下
class AddLatitudeLongitudeToUsers < ActiveRecord::Migration
def change
add_column :users, :latitude, :float
add_column :users, :longitude, :float
end
end
運行rake db:migrate
保存更改。
添加下面的地理編碼設置爲用戶模型
class User < ActiveRecord::Base
geocoded_by :current_sign_in_ip
after_validation :geocode, if: :current_sign_in_ip_changed?
end
因爲我們大多數人在測試和開發我們的本地機器上的應用程序,current_sign_in_ip將下降記錄爲「127.0.0.1」您登錄後。
您可以從軌控制檯驗證rails c
u = User.find_by_email("[email protected]")
u.current_sign_in_ip
u.latitude
u.longitude
要查看是否地理編碼器工作與否,讓手動更改IP
u.current_sign_in_ip = "199.182.122.98"
u.save
u.latitude
u.longitude
登錄後,請確保current_sign_in_ip場有IP記錄下來。否則,緯度和經度字段將爲零。
我已經完成了所有這些,但經緯度仍然不足 – 2015-02-24 03:21:33
它適合你嗎? – Tim 2015-02-24 10:01:05
不,因爲我在我的網站上嘗試對sign_in進行地理編碼。所以,如果有人登錄,我會收到他們的ip並將其更改爲經度,緯度。 – 2015-02-24 17:49:40