Ruby on Rails:使用设计,用户自动创建配置文件,格式为

时间:2017-02-04 13:33:45

标签: ruby-on-rails ruby devise

我有一个RoR问题,虽然这很容易,但我无法做到。

在这里。

我有一个使用设计创建的用户模型。我还想使用scaffold创建一个Profile模型,并将其与User。

相关联

现在,只要使用设计创建帐户,我就想创建个人资料条目。我就是这样做的:

user.rb
has_one :profile
before_create :build_profile

然后这是我的个人资料模型

profile.rb
belongs_to :user

我的个人资料架构只有:

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

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

我想要的是将所有Profile模式与设计用户创建页面(表单)一起包含在内。

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

P.S。我刚刚开始开发RoR并且不知道如何解决这个问题。

如果您可以为我提供任何代码段,那就太棒了!谢谢!

1 个答案:

答案 0 :(得分:0)

因此#myModal { z-index:100000; } belongs_to是ActiveRecord助手,可让您轻松调用相关模型。但是您必须自己创建外键,在本例中是用户配置文件上的user_id,因此您的配置文件架构将如下所示:

has_one

[username | organization | bio | birth date | gender | user_id | created_at | updated_at] Profile关联后,如果您希望他们填写个人资料信息,您需要将其重定向到User视图,他们会在其中添加所有这些额外的字段,将保存到配置文件中。您也可以将其作为User sign_up表单本身的一部分来完成,这取决于您。

要使用Devise启用自定义视图,您可以在sign_up表单上添加额外字段,然后将其分配给Profile,您需要在Profile#edit文件中设置config.scoped_views = true

之后,您可以在config/initializers/devise.rb中编写完全自定义视图,具体取决于角色。只需添加额外的字段,然后再将它们分配给Profile in custom自定义Devise控制器,比如users/sessions/new。有关详细信息,请查看有关观看次数here和控制器here的说明。

您可以在ApplicationController上为Devise进行自定义重定向。您可以在Devise wiki

上阅读更多内容