Как хранить, куда был направлен новый пользователь?Использование Rails + Devise - PullRequest
2 голосов
/ 09 ноября 2011

У меня есть приложение rails, которое использует devise. Мне интересно знать, возможно ли в таблице «Пользователь» каким-то образом отследить, откуда появился новый пользователь, реферер HTTP?

Мне бы хотелось узнать, что пришло с Facebook, Twitter, LinkedIn, Google+, чтобы отследить вирусный цикл.

Есть идеи? Кто-нибудь видел это? Возможный? Где это должно жить в приложении рельсы? Все еще очень новый. Спасибо

Ответы [ 2 ]

3 голосов
/ 09 ноября 2011

Это можно сделать так. Может потребоваться некоторая настройка и исправление, но вы получите представление Сделайте перед фильтром для контроллера приложений, вы будете вызывать его для любого действия

def landing_filter
   if from_other_site(request.referrer) and !session[:referer].blank?
      session[:referer] = request.referrer #you don't want to delete first entrance 
   end
end

from_other_site должен быть методом, который проверит доменное имя в URL-адресе реферера, если оно совпадает с вашим, то возвращает false, в противном случае true

в представлении devise / registration / new.erb.html добавить в скрытое поле формы

<%= f.hidden_field :referrer, session[:reserrer] %>

и не забудьте добавить миграцию с новым полем базы данных для пользователя

0 голосов
/ 25 апреля 2015

Сохраните реферер где-нибудь и после создания пользователя скопируйте информацию в пользовательскую таблицу. Использование сессии для сохранения реферера работает, но постоянные куки лучше. Файлы cookie могут сохранять информацию даже тогда, когда пользователь закрывает браузер и возвращается на следующий день.

# so basically in ApplicationContreller using before_filter
def referer_before_filter
  if cookies[:referer].blank?
    cookies.permanent[:referer] = request.env["HTTP_REFERER"] || 'none'
  end
end

# and in signup action somewhere else saving that information
@user.referer = cookies[:referer] # or maybe to some other table

Вместо изменения каждого действия вы также можете использовать рельсовые уборщики / наблюдатели для автоматического сохранения при каждом создании объекта.

Хорошим камнем для автоматического сохранения реферера и другой необходимой информации является https://github.com/holli/referer_tracking. Вы можете выбрать, хотите ли вы сохранять информацию вручную или использовать подметальные машины для автоматического сохранения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...