質問するログイン新規登録

回答編集履歴

1

追記

2017/05/03 11:33

投稿

tkmtmkt
tkmtmkt

スコア1800

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がテーブルの関連に影響するものと勘違いしていました。