是否有一种首选方法可以在单个操作中创建具有关联的新ActiveRecord模型对象的层次结构(例如,创建具有多个孩子的模型)?这只是应该在不同的位中完成的吗?
以博客文章为例,其中包含了很多评论。我添加了对博客文章作者的支持,在博客帖子的同一表单中添加了初始评论。现在,我所做的是在博客文章中有一个after_create调用,用于检查是否有评论,如果文章存在,博客文章会创建评论。
我正在考虑用未保存的博客文章构建(.build)评论,但显然这不起作用,因为博客帖子实际上还没有id,因为它尚未保存。我很想知道其他人采取了什么方法。
答案 0 :(得分:3)
我更喜欢嵌套的模型表单。
型号:
class Comment < ActiveRecord::Base
belongs_to :post
end
class Post < ActiveRecord::Base
has_many :comments, :dependent => :destroy
accepts_nested_attributes_for :comments
end
控制器:
@post = post.new
@post.comments.build
查看:
<% form_for @post do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :title %><br />
<%= f.text_field :title %>
</p>
<% f.fields_for :comments do |builder| %>
<p>
<%= builder.label :content, "Comment" %><br />
<%= builder.text_area :content, :rows => 5 %>
</p>
<% end %>
<p><%= f.submit "Submit" %></p>
<% end %>