mari-mari
@mari-mari (マリ マリ)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Rails クックパッドのようなサイトのテーブル・カラムについて

Ruby on Railsでクックパッドのように、トップに表示される画像やタイトル、キャッチコピーや作り方の手順等、色々な情報を1つのポストとして投稿できるサイトを作りたいと考えています。

今データベース図を書いていて、テーブルやカラムについて考えているのですが、一つのテーブルに、id、user_idと同じようにtop_photo、catchcopy等とカラムを作るというので合ってますか?

また、クックパッドの作り方の手順のように

手順1:画像、コメント 
手順2:画像、コメント

のように画像とコメントのセットをいくつも載せれるようにしたいのですが、その場合はどうするのでしょうか。

初学者で分からない事だらけです。分かっていないが故に質問自体も分かりにくいかと思いますが、よろしくおねがいします。

0

1Answer

一つのテーブルに、id、user_idと同じようにtop_photo、catchcopy等とカラムを作るというので合ってますか?

top_photocatchcopy をどの単位に持たせたいか、だと思います。
ユーザー単位に1つだけもたせるのであれば、おっしゃるように一つのテーブル、例えば「ユーザー」テーブルにカラムを作ればよいと思います。

そうではなく一人のユーザーが複数レシピを投稿できて、そのレシピの情報として top_photocatchcopy を持たせるのであれば別のテーブルに、例えば「レシピ」テーブルを作って、そこにカラムを作るべきだと思います。

何がやりたいのか次第で、テーブルの構造は変わってくると思います。

また、クックパッドの作り方の手順のように

手順1:画像、コメント 
手順2:画像、コメント

のように画像とコメントのセットをいくつも載せれるようにしたいのですが、その場合はどうするのでしょうか。

例えば、先ほどの「レシピ」テーブルを作ったとして、さらにレシピの手順を「手順」テーブル(「順番」「画像」「コメント」などのカラムを持つ)に作る、などが考えられます。

その場合には、テーブル(モデル)を has_many の関連付けをしてあげることになると思います。

「レシピ」対「手順」が、1対多の関係になるイメージですね。

詳しい話はガイドなどのドキュメントを見た方が良いと思います。

0Like

Comments

  1. @mari-mari

    Questioner

    ありがとうございます。
    分かりやすく、どういう構造にすればいいかがイメージできました。

Your answer might help someone💌