質問: Point.create(data: [@a]) #poitテーブルのdataカラムに変数@aを代入 #memberモデルで作った変数aをpointモデルで使いdataカラムに代入する。 ``` 上記のように変数aを2つのテーブルで使用することが出来るのかわからずに困っております。 テーブル間をまたいだ変数の読み込みはローカル変数ではなくインスタンス変数なのかな?と思いましたがそれも違うような気がしてます。 テーブル間をまたいだデータ(変数)のやりとり方法が知りたいです。 もっといい方法があるのであれば教えていただけないでしょうか? 宜しくお願いします。
回答: 全般にコードがおかしいのですが、投稿するときに書き換えた事による問題なのか、正しいコードの書き方を知らないせいなのかわかりません。一応想像で補完して回答書きましたが、これの意味がわからないようでしたら、ちょっと先に進みすぎているように思います。Rubyの入門書を読みつつ、Railsの入門書やRailsチュートリアルを一通りやってみて動きが理解できるようになることが必要です。 > > 疑問1 > > > このコードであれば、変数に保存する必要が無いです。 ``` member = Member.find(3) member = Member.create(score: member.number1 + member.number2) ``` ところでこのコード、1行目の`member`と2行目の`member`は違うものになってしまっています。やりたいのは ``` member = Member.find(3) member.update(score: member.number1 + member.number2) ``` のような気がします。 そうであれば、`score`カラムはいらないのではと言う話になってきます。 ``` class Member < ActiveRecord::base def score number1 + number2 end end m = Member.find(3) m.score #=> m.number1 + m.number2 の結果が帰ってくる ``` > 疑問2 これも変数使う必要が無いです。 ``` member = Member.find(3) point = Point.create(data: member.score) ``` (が、Memberモデルの値をコピーして保存する、という操作自体が必要なのか疑問です。)