0

我正在使用 Authlogic 和 net-ldap 在我的新 Rails 4 应用程序中对 Active Directory 的用户进行身份验证。工作得很好...

但是,我想从另一个数据库导入所有用户,这样他们就不必从头开始创建帐户(而且,因为每个用户都必须选择另一个用户作为他的主管来完成他的个人资料 - 它变成了一个鸡蛋如果我从一个空的用户表开始,就会出现问题)。我的新用户表中有一些必填字段不在源用户表中,因此我想强制用户在初始登录时完成他们的个人资料,然后才能进入应用程序。

有没有办法我可以做一个 before_create user_session 验证login_count is null或类似的东西?有没有更好的方法来处理这种事情?

任何建议表示赞赏。谢谢你。

4

1 回答 1

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,没有迁移:

在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
于 2013-08-09T06:08:31.610 回答