Как можно было бы реализовать этот вид постепенного обязательства / ленивой регистрации в направляющих?

txt = txt.Trim();
5
задан San Diago 28 May 2009 в 05:20
поделиться

2 ответа

Я бы создал модель профиля , которая автоматически создается для любого пользователя, который посещает ваш сайт и добавляет первое избранное, оценивает первый элемент и т. Д. Профиль должен быть сохранен в вашей базе данных, включая подходящую случайную и уникальную строку. Эта строка может быть сохранена в виде файла cookie на стороне клиента и позже будет использоваться для получения вашего профиля. Он должен быть случайным и достаточно длинным, чтобы вы не могли легко подделать свой файл cookie и получить профили других анонимных людей, но этого нельзя полностью избежать (так что будьте осторожны, вы не храните конфиденциальные данные в анонимных профилях!).

После регистрации пользователя , вы можете связать их профиль с их новой записью пользователя и удалить файл cookie и уникальный строковый идентификатор. Во всем приложении вы можете решить использовать эту информацию только тогда, когда пользователь вошел в систему. Вы можете определить before_filter , который захватывает текущего пользователя, и только если есть реальный пользователь, вошедший в систему, вы используете данные профиля:

class ApplicationController < ActionController::Base
  before_filter :fetch_user_data

  def fetch_user_data
    @current_user = ... # Work your magic to get current user
  end

  private

  def current_profile
    @current_user and @current_user.profile  # Use profile association
  end
end

Где-то в действии контроллера:

if current_profile
  # Do stuff with current_profile
  # Only available to registered users...
end

Вы можете позже изменить реализацию current_profile , если передумаете и хотите, чтобы анонимные профили имели эффект для ваших анонимных пользователей.

8
ответ дан 13 December 2019 в 22:15
поделиться

Единственный способ идентифицировать пользователей - использовать файлы cookie. Сайт, который вы использовали, вероятно, делает следующее:

Пользователь впервые создает запись в таблице «Пользователи» и добавляет их в группу «Гости». Сохраните файл cookie с идентификатором на компьютере пользователя, чтобы вы могли найти его позже.

Если пользователь решит зарегистрироваться, вы можете заполнить остальные его данные в таблице пользователей (возможно, вы даже захотите создать отдельную таблицу для получения сведений о пользователях и регистрационных данных, таких как имя пользователя / пароль и т. д.) и добавьте их в группу зарегистрированных пользователей.

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

Как это вопрос рельсов ...

Я бы, вероятно, обработал большую часть этого в before_filter в вашем application_controller.rb. Шаги будут примерно такими:

if has_cookie
   @user = lookup_user
else
   @user = create_new_guest_user
end

Для этого можно очень легко расширить одну из существующих структур аутентификации, например act_as_authenticated или Clear.

2
ответ дан 13 December 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: