回答編集履歴
1
追記
answer
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
> has_many や belongs_to は、テーブル間の関係性を表すもので、実際にテーブル間を繋げるのは外部キーによってである。
|
2
|
+
|
3
|
+
「モデル間の関係性を定義するもの」と考えたほうが適切な気がします。
|
4
|
+
|
5
|
+
|
1
6
|
> user.rb に has_many :micropostsっと書けるのは、micropostsテーブルにuser_idカラムがあるから?
|
2
7
|
逆に、microposts.rb に belongs_to :user と書いているが、usersテーブルにmicroposts_idカラムなんてないけど。。。。
|
3
8
|
|
@@ -6,4 +11,20 @@
|
|
6
11
|
* user.rb に has_many ⇒ user.micropostsのメソッドを使用できるようにする
|
7
12
|
* microposts.rb に belongs_to ⇒ micropost.userのメソッドを使用できるようにする
|
8
13
|
|
9
|
-
どちらもテーブルからデータを取得する際にはどちらも micropostsテーブルのuser_idカラムを使用します。
|
14
|
+
どちらもテーブルからデータを取得する際にはどちらも micropostsテーブルのuser_idカラムを使用します。
|
15
|
+
|
16
|
+
**【補足】**
|
17
|
+
|
18
|
+
外部キーについてはとりあえず以下の解釈でよいと思います。
|
19
|
+
|
20
|
+
* テーブルは「主キー」を持つ
|
21
|
+
* 関連する他のテーブルの主キーを指す列を「外部キー」と呼ぶ
|
22
|
+
|
23
|
+
|
24
|
+
ソースコードとデータベースの関係については以下のようになっています。
|
25
|
+
|
26
|
+
* db:migrationでマイグレーションファイルからDBテーブル、インデックスを生成する
|
27
|
+
* プログラム実行時にDBテーブルの列定義からモデルのフィールド定義を生成する
|
28
|
+
|
29
|
+
上の通りの関係なので、モデルに記述したhas_many や belongs_toはDBテーブルには影響を与えません。
|
30
|
+
※初めてrailsプログラム作成した頃は、db:migrationでテーブル作成する際にモデルに記述したhas_many や belongs_toがテーブルの関連に影響するものと勘違いしていました。
|