gpt4 book ai didi

ruby-on-rails - 设计:用户所属组织

转载 作者:行者123 更新时间:2023-12-03 16:10:35 25 4
gpt4 key购买 nike

我正在使用设计进行身份验证,并且在注册页面上我有一个用于“组织”的文本字段,因此当用户注册时,他们将创建一个组织,并且我希望用户与该组织相关联(用户模型具有organization_id 属性)。我已经创建了设计 View ,并为组织名称添加了一个 fields_for。在我的模型中,我有 User owns_to :organization 和 Organization has_many :users(将有多个用户与组织相关联)。我一直在尝试在不修改 Controller 的情况下尝试做到这一点,但没有走运。请不要建议在不修改 Controller 的情况下执行此操作,除非您有一个示例应用程序,您已经在其中实现了它并且可以指向它。

我创建了一个注册 Controller ,如下所示:Override devise registrations controller

我只是在 Controller 中抛出了一些 puts 语句,但我没有看到控制台上显示的那些语句,所以看起来我没有进入这个 Controller 。

我还将我的 View 从 app/view/devise/registrations 复制到 app/views/registrations 之后,我的 View 似乎来自外太空!我创建的组织字段不再显示,我似乎无法分辨 View 是从哪里加载的。

抱歉没有更简洁,但我不知道该去哪里。

最佳答案

您可以使用 accepts_nested_attributes_for在您的用户模型中 ( documentation )

它应该看起来像:

class User < ActiveRecord::Base
belongs_to :organization
accepts_nested_attributes_for :organization
end

class Organization < ActiveRecord::Base
has_many :users
end

在 View 中,您可以使用 Rails 助手或手动创建字段:
<input type="text" name="user[organization_attributes][name]">

<% user = User.new(organization => Organization.new) %>
<%= form_for user do |form| %>
<%= form.fields_for user.organization do |organization_form| %>
<%= organization_form.text_field :name %>
<% end %>
<% end %>

编辑:
您的设计 View 应如下所示:
<h2>Sign up</h2>
<% resource.organization ||= Organization.new %>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>

<%= f.fields_for resource.organization do |organization_form| %>
<div><%= organization_form.label :name %><br />
<%= organization_form.text_field :name %></div>
<% end %>

<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>
<div><%= f.submit "Sign up" %></div>
<% end %>
<%= render :partial => "devise/shared/links" %>

关于ruby-on-rails - 设计:用户所属组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7987015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com