0

我正在使用 STI 创建一个应用程序,它有一个用户父级和两个子级雇主和求职者。关系已经建立和测试。

我想使用 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

当我输入参数时,我可以在调试器中看到所有正确的参数。使用上述方法,我可以创建一个类型为求职者或雇主的记录。

我只是无法将其余数据放入 Db,因为我没有参数“句柄”可供使用。

4

1 回答 1

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
于 2013-03-27T18:37:44.387 回答