0

クライアントから、他のオブジェクトに関連するオブジェクトを送信しています:

変数データ = {
  「コメント」: 結果.コメント,
  "ドキュメント": {
    "id": 結果.doc.id
  }
  "サイト": {
    "url": result.site.url
  }
};

$.ajax({
  URL: '/データ',
  タイプ: 'POST',
  データ: データ
});

/dataこれは私のコントローラーに投稿されます。メソッドにはcreate、次のコード ブロックがあります。

デフォルト作成
  @data = Data.new(params[:data])
  @data.user_id = current_user.id

  Respond_to do |フォーマット|
    @data.save の場合
      @doc = Doc.find_or_create_by_id(params[:doc])
      @doc.save
      @site = Site.new(params[:site])
      @site.doc_id = @doc.id
      @site.save

      format.html //もの
      format.json //もの
      format.js //もの
  終わり
終わり

この問題に正しく取り組んでいるかどうか、私は興味があります。私が持っているような関連オブジェクトの場合、コントローラーはかなり「重い」ようです。

この問題に対する他の解決策はありますか?

編集:

データ・モデル:

クラスデータ
  所属先 :site, :polymorphic => true
  所属先:ユーザー
終わり
4

1 に答える 1

2

データモデルはどのように見えますか? ネストされたすべての属性の割り当て方法はありますか?

def create
  @data = Data.new(params[:data])
  @data.user = current_user

  respond_to do |format|
    if @data.save
      @doc = Doc.find_or_create_by_id(params[:doc][:id]) 
      @site = @doc.sites.create(params[:site])

      format.html //stuff
      format.json //stuff
      format.js //stuff
  end
end

Active Record Relations の詳細については、Rails Guidesを参照してください。

于 2012-07-24T23:28:58.950 に答える