0

私はRuby1.8.7とRails2.3.8を開発しています。アクションで同じIDを別のモデルで作成しようとしています。

def create
  id = params[:id]
  item_master = ItemMaster.new(params[:item_master)
  item_master.id = id
  item_master.save
  item_master_child = ItemMaster.new(params[:item_master_child])
  item_master_child.id = id
  item_master_child.save
  p item_master
  # => ItemMaster id: 654, style: 6, icon: 7
  p item_master_child
  # => ItemMasterChild id: 654, sub_style: 4, roll: 5
end

保存は正常に終了したようですが、実際にはitem_master paramsはid:654、style:0、icon:0になります。idを除くすべてのパラメータが0になります。何かアイデアはありますか?

4

3 に答える 3

0

AFAIK Railsでは、データベースオブジェクトのidフィールドにデータを割り当てることはできません。それらを何らかの方法で接続する必要がある場合は、「has_one」関係を持つ外部キー、またはbelongs_toを追加します。

于 2012-07-30T12:21:39.503 に答える
0

あなたはこのようにすることができます:

item_master_child.id = item_master.id
于 2012-07-30T12:08:22.023 に答える
0

問題は保護された属性であるため、ID属性を一括割り当てることはできません。私はこのように解決しました。

新しいItemMasterを作成し、id属性のみを設定して保存します。postパラメータを使用して新しいItemMasterChildを作成し、id属性を設定して保存します。次に、投稿属性によってItemMaster属性を更新します。これは正常に機能します。

属性の更新は、item_master_childを保存した後に行う必要があります。item_master.saveの後に置くと、属性は0に設定されます。理由はわかりません。

def create
  id = params[:id]
  item_master = ItemMaster.new
  item_master.id = id
  item_master.save
  item_master_child = ItemMaster.new(params[:item_master_child])
  item_master_child.id = id
  item_master_child.save
  item_master.update_attributes(params[:item_master])
end

すべてのサポートと返信に感謝します。

于 2012-07-31T02:08:18.623 に答える