teratail header banner
teratail header banner
質問するログイン新規登録
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

4458閲覧

テーブルからテーブルにレコードをコピーしたい

828kk88

総合スコア62

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2017/02/01 15:54

0

0

DateaテーブルからDatebテーブルに指定したレコードをコピーしたいです

datea= Datea.find(1)
Dateb.create(datea)

と書いてみたのですがうまくいきません
他にも色々と試してみたのですが全部エラーでした

原因と解決策をぜひ教えていただきたいです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

dateaの持っているデータをhashに変換し、必要な分だけDatebを作成するときに渡すというのはどうでしょう?
attribute名が同じクラスだと推測して

ruby

1datea= Datea.find(1) 2attributes = datea.attributes 3Dateb.create(attributes.slice(:name, :age, .......)) # slice(...)の...にはDatebに必要なattribute名のシンボルを指定する

投稿2017/02/01 23:15

satoshih

総合スコア853

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

828kk88

2017/02/02 11:00

attributes.sliceを使うと何故かハッシュの中身が空になってしまい、Datebテーブルに空のレコードが挿入されてしまいました。 DateaもDatebも持っているカラムは同じなのでsliceを使う必要はないかなと思い Dateb.create(attributes) としてみたのですがなぜかエラーが出てしまいました
satoshih

2017/02/03 11:42

idなど、データを作るときに渡せないパラメータがあったりするので、 そういうものを除外する必要があります。 あと、エラーって何でしょう?
828kk88

2017/02/04 08:13

ハッシュattributesに含まれるカラム"id"=>1はDatabテーブルにすでに存在しているためエラーが起きているようです dataa= Dataa.find(1) attributes = dataa.attributes post= attributes.delete(:id) Datab.create(post) としたところDatabに何故か空のレコードが追加されていました。 どうやらpostは中身が何もないようです。 どうすれば解決できるでしょうか? そもそもattributesはハッシュではないのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問