设计:用户所属组织

我正在使用设计进行身份validation,在“注册”页面上,我有一个“组织”文本字段,因此当用户注册时,他们将创建一个组织,我希望用户与该组织相关联(用户模型具有organization_id属性)。 我创建了设计视图,并为组织名称添加了fields_for。 在我的模型中,我有User belongs_to:organization and Organization has_many:users(将有多个用户与组织关联)。 在没有修改控制器的情况下,我已经找不到尝试这样做的每一条路,但没有运气。 如果没有修改控制器,请不要建议这样做,除非您有一个示例应用程序,您已经实现了它,您可以指向它。

我已经创建了一个注册控制器,如下所示: 覆盖设计注册控制器

我只是在控制器中抛出了一些put语句,我没有看到它们在控制台上显示,所以看起来我没有进入这个控制器。

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

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

您可以在用户模型中使用accepts_nested_attributes_for ( 文档 )

它应该看起来像:

 class User < ActiveRecord::Base belongs_to :organization accepts_nested_attributes_for :organization end class Organization < ActiveRecord::Base has_many :users end 

在视图中,您可以使用Rails帮助程序或手动创建字段:

  <% 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 %> 

编辑:您的设计视图应如下所示:

 

Sign up

<% resource.organization ||= Organization.new %> <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %> <%= devise_error_messages! %>
<%= f.label :email %>
<%= f.email_field :email %>
<%= f.fields_for resource.organization do |organization_form| %>
<%= organization_form.label :name %>
<%= organization_form.text_field :name %>
<% end %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation %>
<%= f.submit "Sign up" %>
<% end %> <%= render :partial => "devise/shared/links" %>