【问题标题】:Ruby on Rails: Using devise, auto-create profile with user, in one formRuby on Rails:以一种形式使用设计,自动创建用户配置文件
【发布时间】:2017-02-04 13:33:44
【问题描述】:

我有一个 RoR 问题,虽然很简单,但我做不到。

来了。

我有一个使用 devise 创建的用户模型。我还想使用脚手架创建一个 Profile 模型,并将其与 User 关联。

现在,每当有人使用 devise 创建帐户时,我都想创建个人资料条目。我会这样做:

user.rb
has_one :profile
before_create :build_profile

那么这是我的个人资料模型

profile.rb
belongs_to :user

我的个人资料架构只有:

[username | organization | bio | birth date | gender | created_at | updated_at]

现在,当调用设计 user_signup 路由时,只有电子邮件、密码和密码确认。

我想要的是将所有配置文件架构与设计用户创建页面(表单)一起包括在内。

无论如何我可以做到这一点吗?如果 Rails 无法做到这一点,有没有办法在他创建帐户时重定向用户,重定向到个人资料创建页面(并且可能在他填写个人资料页面之前不让他访问其他功能)?

附:我刚开始开发 RoR,不知道如何解决这个问题。

如果你能有任何代码 sn-ps 给我,那就太棒了!谢谢!

【问题讨论】:

标签: ruby-on-rails ruby devise


【解决方案1】:

所以belongs_tohas_one 是ActiveRecord 助手,可以让您轻松调用相关模型。但是您必须自己创建外键,在本例中为用户配置文件上的 user_id,因此您的配置文件架构将如下所示:

[username | organization | bio | birth date | gender | user_id | created_at | updated_at]

Profile 连接到User 后,如果您希望他们填写个人资料信息,您需要将他们重定向到Profile#edit 视图,他们将在其中添加所有这些额外的字段,这将保存到个人资料中。您也可以将其作为用户注册表单本身的一部分,这取决于您。

要使用 Devise 启用自定义视图,以便您可以在注册表单上添加额外字段,然后将它们分配给 Profile,您需要在 config/initializers/devise.rb 文件中设置 config.scoped_views = true

之后,您可以编写完全自定义的视图,例如在users/sessions/new 中,具体取决于角色。只需添加额外的字段,然后再次将它们分配给自定义设计控制器中的配置文件,例如Users::SessionsController。有关更多详细信息,请查看有关视图 here 和控制器 here 的说明。

您可以在 ApplicationController 上为 Devise 进行自定义重定向。你可以阅读更多关于设计wiki

【讨论】:

  • 我不熟悉的是如何将其作为用户注册表单的一部分,我不知道该怎么做。
  • @Lorelyn 您可以在 Devise 上找到该信息 -> github.com/plataformatec/devise#configuring-views
  • 我已经更新了我的答案@Lorelyn,但您可以再次在 Devise Getting Started 上找到所有这些信息...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 2016-03-15
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多