2015-08-24 4 views
0

У меня есть следующий код в моей модели пользователя.Рельсы. Применение условного кода к обратному вызову после проверки: геокодирование по городу или IP-адрес в зависимости от того, что availlable

geocoded_by :city 

    after_validation :geocode, if: ->(user){ user.city.present? and user.city_changed? } 

Первоначально пользователь не должен вводить свой город, чтобы эти пользователи не были геокодированы. Есть ли способ запустить условный код при обратном вызове, поэтому, если нет города, геокодирование ip_address, если город геокодирует по городу?

Я принимаю это основной вопрос, но у меня было трудно найти информацию о применении условного кода для обратного вызова

пытался

if self.city.present? 
    geocoded_by :city 
else 
    geocoded_by :ip_address 
end 

без успеха

+0

Pu t 'if' в вашем методе' geocode'. –

+0

См. Выше - не работает – GhostRider

ответ

0

По the docs вы можете передать метод до geocoded_by:

geocoded_by :geo_attr 

def geo_attr 
    if self.city.present? 
    self.city 
    else 
    self.ip_address 
    end 
end 

 Смежные вопросы

  • Нет связанных вопросов^_^