我正在尝试构建一个多模型表单 - 但其中一个问题是,我需要链接表单中的模型。
例如,假设我的表单有以下模型:Users,Profiles
创建新用户时,我想同时创建一个新的配置文件,然后将这两个配置文件链接起来。问题是,如果还没有创建它们,它们还没有ID - 那么我该如何分配链接值?
谢谢!
-Elliot
我注意到,有些人喜欢这个 - 要查看关于链接这两个模型的更多信息,请查看我的第二个问题:Linking two models in a multi-model form
答案 0 :(得分:5)
实现所需结果的一种方法是,您可以制作一个利用Rails中嵌套属性支持的表单:
<%= form_for(@user) do |f| %>
<%= f.label :my_user_attribute %>
<%= f.text_field :my_user_attribute %>
<%= f.fields_for :profile do |fp| %>
<p>
<%= fp.label :my_profile_attribute %>
<%= fp.text_field :my_profile_attribute %>
</p>
<% end %>
<%= f.submit %>
<% end %>
您还需要将以下内容添加到User类:
accepts_nested_attributes_for :profile
您可以阅读有关Active Record Nested Attributes here的更多信息。 您可以阅读有关ActionView表单助手here的更多信息(在页面中搜索“嵌套属性示例”)。
如果您使用此方法,以及两个模型上的良好验证,您将不必担心跟踪数据库ID,因为两者都将由ActiveRecord同时创建(但直到两个模型对象都有效) )。