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