我正在建立一个工作委员会,因此有两个用户模型以及雇主和申请人。我正在使用设计,因此我现在的挑战是将其与多态关系一起使用。
通过一些rails控制台测试,我知道设计中的(资源)传递了所有用户信息,并且传递了role_type,即申请人或雇主。但是它设置为 nil,因此虽然我的用户被保存,但它并没有保存申请人或雇主的角色类型。此外,仅在用户表中的申请人或雇主表中没有保存任何内容。我的代码在下面,但我的问题实际上是如何将 role_type 传递给设计资源哈希?或者,如果这不可能是解决这个问题的最优雅的方法。
非常感谢!
如果我错过了任何东西,完整的项目代码也在这里https://github.com/PatGW/jobs
下面是视图->设计->用户->new.html.erb
<h1>Sign Up</h1>
<%= form_for @user do |f| %>
<% if @user.errors.any? %>
<div class="error_messages">
<h2> Form is invalid</h2>
<ul>
<% for message in @user.errors.full_messages %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<p>
<%= f.label :email %><br />
<%= f.text_field :email %>
</p>
<p>
<%= f.label :password %><br />
<%= f.password_field :password %>
</p>
<p>
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %>
</p>
<p>
<%= radio_button_tag :role_type, "employer", :checked => false %><br />
<%= label :role_type, 'Employer' %>
</p>
<p>
<%= radio_button_tag :role_type, "applicant", :checked => true %><br />
<%= label :role_type, 'Applicant' %>
</p>
<p class="button"><%= f.submit %></p>
<% end %>
继承自 DeviseController 的 UsersController
class UsersController < Devise::RegistrationsController
def new
super
end
def create
User.transaction do
super
after_sign_in_path(resource)
end
end
private
def after_sign_in_path(resource)
debugger
@user = User.new(params[:user])
if params[:role_type] == "coach"
role = Employer.create
else params[:role_type] == "player"
role = Applicant.create
end
end
end