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

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

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

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

Ruby

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

Active Record

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

Q&A

解決済

1回答

729閲覧

【rails】複数の投稿を1記事にまとめるモデルについて

koutah

総合スコア10

Ruby on Rails 5

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

Ruby

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

Active Record

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

0グッド

1クリップ

投稿2019/10/08 05:44

編集2019/10/08 06:25

お世話になっています。
今Rails5で次のような機能を実装したいと考えています。

##やりたいこと

Userが複数の投稿(Post)ができる。
Userは自分の投稿(Post)をまとめて1つの記事(Article)にできる。

やってみたこと

Userが複数のArticleを持ち、さらに1つのArticleが複数のPostを持つという関係になると考えたので次のようにモデルに記述しました。

Rails5

1## User.rb 2 3has_many :articles 4has_many :posts 5 6## Article.rb 7 8has_many :posts 9belongs_to :user 10 11## Post.rb 12 13belongs_to :user 14belongs_to :article

ですが、この方法だとうまく関連付けを行うことができませんでした。
具体的にはコンソール上で

#このコードが正しいかは不明 User.first.notes.microposts

としたとき

undefined method 'microposts'

のようになってしまいます。

なにかヒントなどをご教授いただけると幸いです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

UserとPostの関連定義に別解はありますが、これでも関連は着くかと思います。
うまく行かなかったというのはどういうところで判断されたのでしょうか。

別解

class User has_many :posts,through :articles class Post # belongs_to :user

投稿2019/10/08 06:08

winterboum

総合スコア23329

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

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

koutah

2019/10/08 06:22

ご回答いただきありがとうございます。 すみません、うまくいかない内容を質問に含めるべきでした。 具体的には、コンソール上で ``` #このコードが正しいかはわからない User.first.article.posts ``` のようなコードで記事に紐づいたpost一覧を取得できると思ったのですが、 ``` #エラーの内容 undefined method 'article' ``` のようになってしまいます。
winterboum

2019/10/08 06:46

エラーが語ってくれているではないですか article でなく articles です User.first.articles.first.posts とかですね。
koutah

2019/10/08 11:01

ありがとうございます。確かにarticlesでないとおかしいですね。失礼しました。 ただ、
koutah

2019/10/08 11:59

ただ、この実装だとUserに紐づくPostを作成した後、いくつかのPostをまとめてArticleにするという ことができているのでしょうか? (つまり、モデルの順番的に User(1) - Article(多)、Article(1) - Post(多)という順番なのにArticleを最後に作成するので不具合がないかという意味です、わかりづらくて申し訳ありません…)
winterboum

2019/10/08 12:46

なるほど、 ですと「別解」のモデルは微妙ですね。 案1)別解モデルで、「繋がるArticleの決まっていないPost」をつなぐ「未決Article]をUser作成時に作っておき、それにぶら下げる 案2)koutakakahoさんの原案モデルで、Post作り初めは article_idなし ん。。。。。 私だと案1かな 理由:  1)Articleにぶら下がっていないPostを集めるというのが厄介そう  2)Postの扱いに例外がないからやりやすい
koutah

2019/10/08 14:18

なるほど、そんなやり方があるんですね! 案1だと、最初はPostはすべて「未決Article」に作って起き、後から「既決Article」に切り替えるというイメージでしょうか?
winterboum

2019/10/08 14:21

Article毎にPostを表示するのと同じ扱いで、まだ行き先の決まっていないPostを表示できるというのがポイントかな
koutah

2019/10/08 14:30

ありがとうございます! とりあえずその方針で続きをやっていこうと思います。 丁寧なアドバイスありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問