我是RoR的新手,我正在尝试实现一种内容管理系统。我们假设有一个管理员用户可以创建其他用户。
我尝试过Devise gem。我的第一个问题是如何使用这个gem,以便管理员用户创建其他用户(输入他们的信息,姓名,电子邮件,密码)?是否以编程方式正确让管理员用户转到注册页面并创建新用户?
我的第二个问题是,在我的应用程序中,管理员应该能够在运行时动态添加组织名称列表。因此,在创建新用户时,应从该用户的组织列表中选择组织。我正在考虑为组织名称创建一个空数据库,admin用户在运行时添加到该数据库。这是一个好方法吗?
非常感谢, 阿米尔
答案 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%确定这是正确的方法 我很高兴听到其他人对此有何评论。