質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

3回答

295閲覧

Railsでデータベースのデータとページを紐づけたい場合はどうすればいいでしょうか

ninpig04

総合スコア33

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2018/01/31 17:58

例えばAというページにはAというページで投稿されたコメントを、BというページにはBというページで投稿されたコメントを表示したいと思っています。
私の考えでは、モデルを作る時カラムをページの数だけ用意して、カラムとページをひも付けなければならないのかなと思っていますが、実際はどうなのでしょうか。
またそうだとしたらそれはどのようにして実現すればいいのでしょうか?
私の予想では

コントローラ

def pageA @posts = Post.where(pageid: "A") end def create @post = Post.new(pageid: params[:A]) @post.save redirect_to("/a/new") end end

ビュー

<h1>コメント一覧</h1> <%= @posts.each do |post| %> <%= post %> <% end %> <div class="main posts-new"> <div class="container"> <h1 class="form-heading">投稿する</h1> <%= form_tag("/posts/create") do %> <div class="form"> <div class="form-body"> <textarea name="A"></textarea> <input type="submit" value="投稿"> </div> </div> <% end %> </div> </div>

これで私のやりたいことは実現できるのでしょうか?
しかしながら私の作っているサービスはページがたくさんあり、これを全てのページでやるのは大変面倒くさそうだなぁとも思っています
何かより良いやり方があったら教えていただきたいです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

データベースにはリレーションという仕組みがありますので、列を逐一用意しなくても問題ありません(というより、追加するたびにコードやデータ構造の変更が必要になるなら、それはデータの増加に全く対応できないプログラム、ということになります)。

Postに対してhas_manyCommentを持たせましょう。

投稿2018/01/31 22:05

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

横レス失礼します。こんにちは。大きい本屋さんに行って、データベースとか、なんとか SQL とかの本が、多く並んでいる付近に、データモデリングの入門書、とか、データベースとは何か、みたいな本があります。エクセルの表のような物を、一つのテーブルとして、他のテーブルと関連付けを説明してあるか立ち読みで確認して、どれかを買うのはどうでしょうか? 間違って、データベースソフト(MySQL, SQL server など)の固有の解説書を買わないようにご注意。

投稿2018/02/02 08:46

nekoyama7

総合スコア200

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

リレーションってモデル間の話じゃないですか?
私がやりたいのはデータとページの紐付けです

投稿2018/02/01 06:32

ninpig04

総合スコア33

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2018/02/01 06:36

「Post.where(pageid: "A")」ということで、ページ自体がPostそれぞれを表示しているものと判断したのですが…そういう構造ではないのでしょうか。
ninpig04

2018/02/01 15:22

すみません、説明がわかりにくかったです 私はA,B,C,D,E,F,Gというページを作っていてそれぞれにさらにa,b,c,d,e,f,g,,h,iというページを作っています それぞれにビューとルーティング、コントローラにアクションを持っていて、例えばAのdで投稿した時のコメントはAのdで表示されるようになっています。 この時、どうやって一つのDBに保存されているデータの中からA-dで投稿されたものを見つけA-dで表示すればいいのかわからないんです・・・
maisumakun

2018/02/01 22:21

「A,B,C,D,E,F,G」という各ページで同じテーブルを使っている、ということでしょうか? どちらにしても、Rails wayから大幅に外れた組み方をしているので、普段の感覚で話をすすめるとぜんぜんついていけないですね…
ninpig04

2018/02/01 22:41

そうです ドットインストール、progate,railsチュートリアル勉強して4ヶ月くらい経ちましたが一向にできるようになりません 才能ないんですかね? こういう場合どうやって作ればいいのでしょうか? 私が学習したものは全てまとめてコメントを表示していたのでさっぱりわかりません
maisumakun

2018/02/01 22:53

誰か先生について習ったほうがいいと思います。 このまま我流で進めていくと、必要もなく壁にぶつかることも多くなると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問