如何使用STI从form_tag参数进行批量分配

时间:2013-03-27 18:24:54

标签: ruby-on-rails ruby single-table-inheritance sti

我正在使用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中,因为我没有参数的“处理”。

1 个答案:

答案 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