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

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

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

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

Q&A

解決済

1回答

619閲覧

検索機能が実装できない

yutann

総合スコア23

Ruby on Rails 5

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

0グッド

0クリップ

投稿2019/07/16 03:39

下記のコードを、書きました。

ruby

1class ArticlesController < ApplicationController 2 def index 3 @q = current_user.articles.ransack(params[:q]) 4 @articles_q = @q.result(distinct: true).recent 5 end 6end

そうすると、以下のエラーが出ました。イメージ説明

ruby on rails 速習実践ガイドという本のコードを真似しながら、よくわからないところもある中コードを書いて勉強をしているのですが、articlesメソッドがそもそも何をするメソッドかわかっていません。このメソッドはいつどこで定義されたものなのでしょうか。エラーの解決方法とともに、教えていただきたいです。

よろしくお願いします!

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

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

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

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

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

winterboum

2019/07/16 05:50

User と Article の定義fileを開示してください。 そこの記述にもんだいがありそうです
yutann

2019/07/16 14:53

このようになってます。 class User < ApplicationRecord has_secure_password has_many :favorites has_many :users, through: :favorites end class Article < ApplicationRecord has_many :favorites has_many :user, through: :favorites end
guest

回答1

0

ベストアンサー

articlesメソッドが何をしているのか分からない時点で、検索機能の前にリレーションを勉強し直した方が良いと思います...汗

articlesは、おそらくusersテーブルと1(users)対多(articles)の関係を築いているのだと思います。
要は、ユーザーが複数の記事を書いている設定で、articlesテーブルでは

user_id id(articleのid) 1 1 1 2 2 3

という感じで、一つ目の記事はusersテーブルのidが1の人、三つ目の記事はusersテーブルのidが2の人というようにリレーションを組んでいます。

1対多の関係を構築する仕組みは様々なウェブサイトに説明があるので、そこから勉強すれば良いと思います。後、検索機能の前にusersとarticlesを1対多で組む部分があるはずですが...飛ばしてませんか?

投稿2019/07/16 03:48

bamboo-nova

総合スコア1408

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

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

yutann

2019/07/16 15:30

知識不足のまま質問してしまってすみません。リレーションについての勉強が足りてなかったんですね。。。 おっしゃる通り、users,articlesの1対多の関係が飛ばされていて、追加するとエラーが解決しました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問