设计:用户所属组织
我正在使用设计进行身份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" %>