动态添加列表到用户的注册页面

时间:2016-06-19 21:11:11

标签: ruby-on-rails ruby devise

我是RoR的新手,我正在尝试实现一种内容管理系统。我们假设有一个管理员用户可以创建其他用户。

我尝试过Devise gem。我的第一个问题是如何使用这个gem,以便管理员用户创建其他用户(输入他们的信息,姓名,电子邮件,密码)?是否以编程方式正确让管理员用户转到注册页面并创建新用户?

我的第二个问题是,在我的应用程序中,管理员应该能够在运行时动态添加组织名称列表。因此,在创建新用户时,应从该用户的组织列表中选择组织。我正在考虑为组织名称创建一个空数据库,admin用户在运行时添加到该数据库。这是一个好方法吗?

非常感谢, 阿米尔

1 个答案:

答案 0 :(得分:0)

我不确定这是否是最佳选择,但我可以设法让它像下面一样工作。
在您的用户模型中,请确保您已在设计中添加了:confirmable

devise :database_authenticatable, :registerable, :confirmable, ...,

您还需要您的用户表具有以下字段。

   t.string   "confirmation_token"
   t.datetime "confirmed_at"
   t.datetime "confirmation_sent_at"

然后在您的用户控制器中添加以下方法。

def create_new_account
  @new_user = User.new(user_params)
  if @new_user.valid?
    @new_user.skip_confirmation!
    @new_user.confirmed_at = nil
    if @user.save
     render action: "some_action"
    else
     render action: "some_other_action"
    end
  end
end

当用户通过该方法创建新帐户时,电子邮件将通过确认令牌发送到新帐户的电子邮件地址。这会将新用户转发到要求他们输入密码的页面 正在发送的电子邮件模板可以在app/views/devise/mailer/confirmation_instructions.html.erb

在您的路线中,请确保您有对控制器操作的发布请求。

post "create_new_account"      => "users#create_new_account"

我不是这方面的专家,但我理解这一点的方式是,您需要Devise中的确认选项让您的新用户帐户输入自己的密码。但由于当前的管理员用户已经登录。您需要跳过确认步骤。

我再也不能100%确定这是正确的方法 我很高兴听到其他人对此有何评论。