如何将现有嵌套模型中的ID与新创建的父模型相关联?

时间:2012-09-23 11:32:42

标签: ruby-on-rails ruby ruby-on-rails-3

我有关系:一个Post有很多Pictures。之前已通过AJAX创建了Pictures,并且他们的ID存储在一个帖子视图页面上的隐藏字段中。提交表单后,post_controller仅保存自己的数据,并从嵌套模型中跳过picture_ids。如何关联它?

def create
  p_attr = params[:post]
  p_attr[:picture_ids] = ActiveSupport::JSON.decode(params[:post][:picture_ids])

  puts p_attr
  @post = Post.new(p_attr)

  puts @post.to_json
  @post.save
end

收到帖子:

{"title"=>"test", "description"=>"test", "picture_ids"=>["505eec681e7bf2b8150001a5","505eea991e7bf2b8150001a1","505ee7761e7bf2b81500018d"]}

创建帖子:

{"_id":"505eeed01e7bf2b8150001b1","created_at":null,"description":"test","title":"test","updated_at":null}

1 个答案:

答案 0 :(得分:1)

如果我正确理解你,你想拍摄已经上传的图片记录,并将它们与刚刚保存的帖子相关联。假设在解码JSON之后params[:picture_ids]是一个数组,您应该可以在Picture上进行更新以实现此目的。保存帖子后立即尝试:

Picture.update_all(
  { :post_id => @post.id },
  :conditions => { :id => params[:picture_ids] }
)