フォームを使用せずに、親の単一の子オブジェクトをプログラムで生成するための最良の実装は何だろうと思っていました。
私の場合、コメントを介してアップロード システムに結び付けたい既存のフォーラム システムがあります。子 Forum オブジェクトを手動で作成して、アップロードが作成されるのと同じ作成アクションでそのアップロードについて話したいと思います。2 つのモデルには次のような関係があります。
子フォーラム:
class Forum < ActiveRecord::Base
...
belongs_to :upload
end
親のアップロード:
class Upload < ActiveRecord::Base
...
has_one :forum
end
私は次のようなことを考えていました:
class UploadsController < ApplicationController
...
def create
#Create the upload and a new forum + initial post to discuss the upload
@upload = Upload.new(params[:upload])
@forum = Forum.new(:upload_id => @upload.id, :title => @upload.name...)
@first_post = Post.new(:forum_id => @forum.id....)
if @upload.save && @topic.save && @first_post.save
redirect_to :action => "show", :id => @upload.id
else
redirect_to :action => "new"
end
end
end
これは私がやりたかったことにかなり近いですが、親オブジェクトが保存されるまで親 ID は生成されません。私はおそらく次のようなことができます:
@upload.save
@forum = Forum.new(:upload_id => @upload.id...
@forum.save....
しかし、オブジェクトがすべて検証された場合にのみオブジェクトを永続化する方がクリーンであると考えました。よくわかりませんが、他の誰かがより良い実装を知っていますか?