У меня есть приложение, которое использует рельсовый геокодер, чтобы найти местоположения зарегистрированных пользователей по их предоставленному почтовому индексу. Это хорошо работает для зарегистрированных пользователей, но я также хочу расширить функциональность для гостевых пользователей. Я использую решение разработать для пользователей, гостей, как показано в этой ссылке: https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-userRails geocoder - геокодирование для зарегистрированных и гостевых пользователей
Вот моя модель пользователя:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates :zip, presence: true
geocoded_by :zip
after_validation :geocode
end
Вот мой create_guest_user
метода:
def create_guest_user
u = User.create(:name => "guest", :email => "guest_#{Time.now.to_i}#{rand(99)}@example.com")
u.save!(:validate => false)
session[:guest_user_id] = u.id
u
end
Я хочу геокодирую guest_user-х местоположение по их IP. Есть ли способ, который я могу вызвать метод геокодирования в моем методе create_guest_user
, а затем передать значения lat и long, когда пользователь гостя будет создан? Любая помощь очень ценится, спасибо заранее!
Это сработало, спасибо! Я пошел вперед и использовал метод, подобный вашему второму предложению. Я не мог понять, как определить реального пользователя в строке 'validate_presence_of'. Какие-либо предложения? – settheline
Прохладный! Ну, я не знаю, что вы делаете с пользователями, но я думаю, что самым простым способом было бы «if:: nonguest» и «def non guest – ussferox
whoops нажал enter. def nonguest/self.name! = 'guest'/end – ussferox