データベースの関係を表すのにModelにアソシエーションを書くと思うのですが、その関係性の考え方がよくわからずに困っています
伝わらないかもしれませんが、レコード一つを基準に考えるのか、レコードがたくさん登録された状態を考えるのか。というところです
userとpostを例にとってみます
userは投稿機能であるpostを利用できます
userテーブルには
user_id | name | |
---|---|---|
1 | kujou | kujou.com |
postには
|post_id|user_id|title|body|
|:--:|:--:|
|1|1|夜ご飯|ハンバーグ|
とあったとき
userにはhas_one :post
(userなくしてpsotが成立しないためにuserを親にする?)
postにbelongs_to :user
を書くのが私の理解です。
この時の考え方はレコード一つです
これは、userはpostの中身を一つも摂らず、postはuserのいくつかのカラムの内、IDというカラムの「一つだけ」を参照するからと考えています。
つまり
user_id | name | |
---|---|---|
1 | kujou | kujou.com |
1
対
0..1
|post_id|user_id|title|body|
|:--:|:--:|
|1|1|夜ご飯|ハンバーグ|
だと思います
これがたくさん登録されたとしたら
user_id | name | |
---|---|---|
1 | kujou | kujou.com |
2 | tachibana | tachibana.com |
3 | sakuraba | sakuraba.com |
|post_id|user_id|title|body|
|:--:|:--:|
|1|1|夜ご飯|ハンバーグ|
2|3|おやつ|プリン
3|1|おやつ|ミネストローネ
となることがあるはずです
このとき、user_id1のkujouさんは2つの投稿をしたようです。
このことにより、レコード一つずつの関係は1:1であるがテーブルでみるとuser_id1のkujouさんは「2つのレコードを所持している」ので
user_id | name | |
---|---|---|
1 | kujou | kujou.com |
2 | tachibana | tachibana.com |
3 | sakuraba | sakuraba.com |
1
対
0..n
|post_id|user_id|title|body|
|:--:|:--:|
|1|1|夜ご飯|ハンバーグ|
2|3|おやつ|プリン
3|1|おやつ|ミネストローネ
となり
userにhas_many :posts
postにbelongs_to :user
が正解なのでしょうか
とても初歩的なことだと思いますがよろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/27 11:12