Ruby on rails 在单个操作中创建新ActiveRecord模型对象层次结构的首选方法

Ruby on rails 在单个操作中创建新ActiveRecord模型对象层次结构的首选方法,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,是否有更好的方法在单个操作中创建具有关联的新ActiveRecord模型对象的层次结构(例如,创建具有多个子对象的模型)?这仅仅是应该在单独的部分中完成的事情吗 以一个有很多评论的博客帖子模型为例。我添加了对博客文章作者的支持,在同一表单中为博客文章添加了初始评论。现在,我要做的是在博客文章中有一个after_create调用,检查是否有评论,如果有,博客文章会创建一个评论 我想用一篇未保存的博客文章来构建(.build)评论,但显然这不起作用,因为博客文章实际上还没有id,因为它还没有被保存。

是否有更好的方法在单个操作中创建具有关联的新ActiveRecord模型对象的层次结构(例如,创建具有多个子对象的模型)?这仅仅是应该在单独的部分中完成的事情吗

以一个有很多评论的博客帖子模型为例。我添加了对博客文章作者的支持,在同一表单中为博客文章添加了初始评论。现在,我要做的是在博客文章中有一个after_create调用,检查是否有评论,如果有,博客文章会创建一个评论


我想用一篇未保存的博客文章来构建(.build)评论,但显然这不起作用,因为博客文章实际上还没有id,因为它还没有被保存。我很想知道其他人采取了什么方法。

我更喜欢嵌套模型表单

型号:

class Comment < ActiveRecord::Base
  belongs_to :post
end

class Post < ActiveRecord::Base
  has_many :comments, :dependent => :destroy
  accepts_nested_attributes_for :comments
end
视图:





5 %>

@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 %>