Rails5.1.1でWebアプリケーション制作の勉強中です。おかげさまでデータベース(モデル)のところまで進むことができました。
現在、テーブルを9つ作りhas_many, has_one, belongs_to で関連付けしカラム値を変更したり代入したりしたいのですが
うまく考えがまとまらないのと、変数の利用の仕方がわからず悩んでおります。やりたいことは以下になります。
疑問1,
membersテーブルでnumber1カラム値とnumber2カラム値を足した値をscoreカラムに代入したい。
class Member < ActiveRecord: :Base member = Member.find(3) #レコードを取り出し変数(member)に代入する。 abc = member.number1 #取り出したレコードのnumber1の値を変数(abc)に代入する。 xyz = member.number2 #取り出したレコードのnumber2の値を変数(xyz)に代入する。 ghi = abc + xyz #代入した変数の値を加算して変数ghiに代入する。 member = Member.create(score: [ghi]) #scoreカラムに代入
・上記で使用する変数はローカル変数でよいのでしょうか?
・scoreカラムに代入する際、値を変数[ghi]で渡せる(代入できる)のでしょうか?
関連付けされたテーブル間でのカラム値の受け渡し方法について
・has_many, belongs_toで関連付けしたpointsテーブルのdata1カラムにmemberテーブルのscoreカラムの値を代入したい。
疑問2,
代入するのはmemberモデル内で行うのか?pointモデル内で行うのか?
このような場合に使うのはインスタンス変数なのかローカル変数どちらを使うのか?
#memberモデル class Member < ActiveRecord: :Base member = Member.find(3) #レコードを取り出し変数(member)に代入する。 a = member.score #取り出したレコードのscoreの値を変数(a)に代入する。 point = Point.create(data: [a]) #poitテーブルのdataカラムに代入
もしくは
#memberモデル class Member < ActiveRecord: :Base member = Member.find(3) #レコードを取り出し変数(member)に代入する。 @a = member.score #取り出したレコードのscoreの値を変数(a)に代入する。 #memberモデルで変数aにscoreカラムの値をaに代入しておいて #pointモデル class Point < ActiveRecord: :Base point = Point.create(data: [@a]) #poitテーブルのdataカラムに変数@aを代入 #memberモデルで作った変数aをpointモデルで使いdataカラムに代入する。
上記のように変数aを2つのテーブルで使用することが出来るのかわからずに困っております。
テーブル間をまたいだ変数の読み込みはローカル変数ではなくインスタンス変数なのかな?と思いましたがそれも違うような気がしてます。
テーブル間をまたいだデータ(変数)のやりとり方法が知りたいです。
もっといい方法があるのであれば教えていただけないでしょうか?
宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/24 23:19