我正在使用STI创建一个具有User父级和两个孩子Employer和Jobseeker的应用程序。已建立并测试了这些关系。
我想使用STI仅使用1个用户控制器将雇主用户和求职者用户存储到Postgres中。
我正在使用form_tag输入详细信息。我创建了
<%= hidden_field_tag :user_type, :jobseeker %>
<%= hidden_field_tag :user_type, :employer %>
因此,用户控制器可以识别输入类型(雇主或求职者)
用户控制器创建动作如下;
if params[:user_type] == "employer"
@employer = Employer.new(params[:employer])
@employer.save
elsif params[:user_type] == "jobseeker"
@jobseeker = Jobseeker.new(params[:jobseeker])
@jobseeker.save
end
当我输入params时,我可以在调试器中看到所有正确的参数。使用上述方法,我可以创建一个具有类型求职者或雇主的记录。
我只是无法将其余数据输入到Db中,因为我没有参数的“处理”。
答案 0 :(得分:1)
使用字段的嵌套名称将用户属性相关的参数与其他参数值分开。在这里,我使用user
作为字段名称:
查看:强>
<% form_tag .. %>
<%= text_field_tag 'user[name]' %> #Assuming you have name attribute
...
<%= hidden_field_tag 'user_type', 'employer' %>
<% end %>
<强>控制器:强>
if params[:user_type] == "employer"
@employer = Employer.new(params[:user])
@employer.save
elsif params[:user_type] == "jobseeker"
@jobseeker = Jobseeker.new(params[:user])
@jobseeker.save
end