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

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

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

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

Ruby on Rails

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

Q&A

解決済

1回答

1449閲覧

Ruby on RailsのModelの関連付けについて

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

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

Ruby on Rails

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

0グッド

0クリップ

投稿2017/02/17 15:06

###Ruby on RailsのModelの関連付けについて質問です。
RailsのModelの関連付けで悩んでいます。 現在、Railsの勉強(完全に勉強用です。)でグループ機能付きのブログサービスを開発しております。 Modelの関連付けの件で質問があります。内容と設定は以下の通りです。

Modelの設定:
Users(ユーザー情報)
Posts(ユーザーが投稿するPost)
Comments(ユーザーが投稿したPostに他のユーザーがするコメント)
Groups(UserとPostが属するグループ)

上記のModelの設定でUsersとPostsとGroupsの関連付けを実装中で悩んでいます。
以下のような関係の関連付けを作成したいです。
Userは多数のGroupに所属でき、多数のPostを持つ。
Postは1つのGroupに所属でき、1人の Userに属する。
Groupは多数のUserとPostを持つ。

仕様は、 ユーザーは自由に投稿を作成して投稿できる。
ユーザーは他のユーザーの投稿に自由にコメントできる。
ユーザーは自由にグループを作成できる。
グループを作成したユーザーがそのグループの管理者になる。 (これはどんな実装をすれば良いか分かりません。ここもアドバイス頂けると幸いです。)

現在は、以下の関連付けまで完成しておりますが、Groupの関連付けが分かりません。
アドバイスなど、よろしくお願いいたします!

###現在、分かっている点

<User.rb> has_many :posts has_many :comments <Post.rb> belong_to :user has_many :comments <Group.rb> <Comment.rb> belong_to :user belong_to :post

上記のGroupの関連付けがわかりません。。
アドバイスなどよろしくお願いいたします。

###補足情報(言語/FW/ツール等のバージョンなど)
Ruby:2.1.8
Rails:4.2.1

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

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

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

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

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

guest

回答1

0

ベストアンサー

...
has_many :through関連付けは、他方のモデルと「多対多」のつながりを設定する場合によく使われます。
...

この章や、このページ全体の内容を調査するとよいとおもいます。

投稿2017/02/17 15:32

katoy

総合スコア22324

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

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

退会済みユーザー

退会済みユーザー

2017/02/18 00:39

ありがとうございます! has_manyではなく、has_and_belongs_to_manyではダメなのでしょうか?
退会済みユーザー

退会済みユーザー

2017/02/18 06:01 編集

そうなんですね! ありがとうございます! ご回答を参考に色々と調べました。 以下で問題ないでしょうか? ご意見など頂けますと幸いです。 <User.rb> has_many: groups, through: :user_grourps has_many: user_groups has_many: posts has_many: comments <Post.rb> belong_to :user belong_to :group has_many :comments <comment.rb> belong_to :user belong_to :post <Group.rb> has_many: user_groups has_many :users, through: :user_grourps has_many :posts <User_grourp.rb>(UserとGroupの中間テーブル) belong_to :user belong_to :group
退会済みユーザー

退会済みユーザー

2017/02/27 02:49

上記の関連付けだとどうでしょうか? よろしくお願いいたします!
moke

2017/02/27 03:50

いいと思いますが、これだとcomment にuser_idとpost_idが必要で美しくないし、コメントをつけたいモデルが増えた時にいちいちidを入れないといけません Polymorphicをオススメします。 人間がやるとバグの温床ですが、 Railsが全て処理してくれます。 http://qiita.com/geshi/items/9e76f8d407dfd3e5211b
退会済みユーザー

退会済みユーザー

2017/02/27 06:43

ご回答ありがとうございます! ポリモフィックの場合は、将来的にCommentの処理を違うモデルにする際に便利だと思うのですが 今回の場合はまだそのような処理を検討しておりません。 今回のような場合でも、Comment にuser_idとpost_idが必要になるのは理想的な実装ではないのでしょうか? よろしくお願いいたします。
moke

2017/02/27 09:44

Commentからuserやpostを探す時ふた手間がかかるぐらいで、問題はないと思います。 そもそも、途中から組み換えても、副作用が少ないのがrailsの良いところです。 ベストは運用しながらみつけていくこともできます。不安もあるでしょうが、あれこれ考えずに、まず、つくる、そして、動かす、使ってもらう。それが一番のruby on railsの魅力なんじゃないですかね
退会済みユーザー

退会済みユーザー

2017/02/27 22:41

ありがとうございます! 皆様、ありがとうございました! 大変参考になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問