回答編集履歴

1

追記

2017/05/03 11:33

投稿

tkmtmkt
tkmtmkt

スコア1800

test CHANGED
@@ -1,3 +1,13 @@
1
+ > has_many や belongs_to は、テーブル間の関係性を表すもので、実際にテーブル間を繋げるのは外部キーによってである。
2
+
3
+
4
+
5
+ 「モデル間の関係性を定義するもの」と考えたほうが適切な気がします。
6
+
7
+
8
+
9
+
10
+
1
11
  > user.rb に has_many :micropostsっと書けるのは、micropostsテーブルにuser_idカラムがあるから?
2
12
 
3
13
  逆に、microposts.rb に belongs_to :user と書いているが、usersテーブルにmicroposts_idカラムなんてないけど。。。。
@@ -15,3 +25,37 @@
15
25
 
16
26
 
17
27
  どちらもテーブルからデータを取得する際にはどちらも micropostsテーブルのuser_idカラムを使用します。
28
+
29
+
30
+
31
+ **【補足】**
32
+
33
+
34
+
35
+ 外部キーについてはとりあえず以下の解釈でよいと思います。
36
+
37
+
38
+
39
+ * テーブルは「主キー」を持つ
40
+
41
+ * 関連する他のテーブルの主キーを指す列を「外部キー」と呼ぶ
42
+
43
+
44
+
45
+
46
+
47
+ ソースコードとデータベースの関係については以下のようになっています。
48
+
49
+
50
+
51
+ * db:migrationでマイグレーションファイルからDBテーブル、インデックスを生成する
52
+
53
+ * プログラム実行時にDBテーブルの列定義からモデルのフィールド定義を生成する
54
+
55
+
56
+
57
+ 上の通りの関係なので、モデルに記述したhas_many や belongs_toはDBテーブルには影響を与えません。
58
+
59
+ ※初めてrailsプログラム作成した頃は、db:migrationでテーブル作成する際にモデルに記述したhas_many や belongs_toがテーブルの関連に影響するものと勘違いしていました。
60
+
61
+