2013-08-08 2 views
0

Я использую Authlogic и net-ldap для аутентификации пользователей в Active Directory в моем новом приложении Rails 4. Хорошо работает ...Rails - Как проверить атрибуты пользователя перед входом

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

Есть ли способ, которым я могу, возможно, сделать проверку до_подготовки before_create на login_count is null или что-то в этом роде? Есть ли лучший способ справиться с такими вещами?

Любые предложения приветствуются. Спасибо.

ответ

0

Я хотел бы добавить поле в таблице пользователей называется completed_profile логического типа:

rails g add_completed_profile_to_users completed_profile:boolean

затем создать метод фильтра в application_controller.rb

def complete_profile 
    if current_user.completed_profile? 
     redirect_to the_path_after_log_in 
    else 
     redirect_to edit_profile_path, error: "Please update your profile." 
    end 
    end 

* field_one и field_two являются обязательные поля для заполнения, прежде чем приступать к приложению. *

В другом контроллере вашего приложения:

before_filter :complete_profile 

этот фильтр не должен быть применен к контроллеру и действию, которое отвечает за оказание страницы редактирования профиля или новой страницы учетной записи, если edit_profile_path = users#edit означает пользователь контроллера вашего фильтра будет выглядеть следующим образом:

before_filter :complete_profile, except: ['edit', 'update', 'new', 'create'] 

вариант 2, без миграции:

гр reate метод фильтра в application_controller.rb

def complete_profile 
    if current_user.field_one.present? && current_user.field_two.present? 
     redirect_to the_path_after_log_in 
    else 
     redirect_to edit_profile_path, error: "Please update your field_one and field_two." 
    end 
    end 

в другом контроллере вашего приложения:

before_filter :complete_profile 
+0

Хорошая идея, спасибо за ваше предложение! Как он знает, что такое заполненный профиль? Разве я не должен указывать, какие поля пользователя составляют заполненный профиль? –

+0

вы можете написать метод, вероятно, который будет проверять все обязательные поля и когда пользователь будет перенаправлен на edit_profile_path, сообщение покажет, какие поля точно отсутствуют. – rmagnum2002

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

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