Rails设计:在用户sign_up上创建关联

时间:2016-12-23 10:30:20

标签: ruby-on-rails ruby devise

作为一个完整的Ruby noob,我需要做一件简单的事情,但这样做的红宝石方式对我来说并不清楚。

想要做的是:

我有一个具有一对一关联的用户模型"帐户"

在设计注册视图中,我想为此帐户添加额外的表单字段,这就是我被困住的地方。

似乎我无法将帐户字段添加到视图

例如,这不起作用:

# address is a field of Account
<%= f.text_field :address %>

如何将帐户模型纳入范围?或者有办法做这样的事情

<%= f.text_field :account['address'] %>

我真的不知道如何将帐户添加到范围或如何正确访问用户关联帐户。

帮助

2 个答案:

答案 0 :(得分:3)

您需要使用accepts_nested_attributes_for :account才能从注册表单中添加参数。 然后通过覆盖设计方法configure_permitted_pa​​rameters将这些参数列入白名单。

def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [account_attributes: [:address]])
end

您可能需要更改哪些参数需要列入白名单。

然后在视图中,您需要使用fields_for之类的

f.fields_for(:addresss) do |address_fields|
  <%= address_fields.text_field :address %>
end

希望这能解决问题。如果某些内容不起作用,请尝试搜索嵌套属性。

答案 1 :(得分:1)

当用户成功注册时,您需要从RegistrationsController方法覆盖设计create以构建account记录