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

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

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

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

Ruby on Rails

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

解決済

メッセージ機能の箇所でエラーが発生しました。

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

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

Ruby on Rails

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

1回答

0リアクション

0クリップ

228閲覧

投稿2022/09/23 15:42

編集2022/09/25 05:32

下記のサイトをうまく活用して、掲載物に応募ボタンを行うと掲載者とメッセージ機能でやり取りができるようにしたいと思っているのですが、掲載物の閲覧ページ(view/plans/show)に応募ボタンを設置してみたのですが、応募ボタンをクリック後にエラーが発生しました。
https://qiita.com/bindingpry/items/6790c91f374acc25bea2
https://qiita.com/aaaasahi_17/items/9e7f344488c720aaf116

!修正しました。
イメージ説明

エラーが発生したファイルがこちらです。
・RoomsController

class RoomsController < ApplicationController before_action :authenticate_user! def create @room = Room.create @entry1 = Entry.create(room_id: @room.id, user_id: current_user.id) @entry2 = Entry.create(params.require(:entry).permit(:user_id, :room_id).merge(room_id: @room.id)) redirect_to "/rooms/#{@room.id}" end def show @room = Room.find(params[:id]) if Entry.where(user_id: current_user.id,room_id: @room.id).present? @messages = @room.messages @message = Message.new @entries = @room.entries else redirect_back(fallback_location: root_path) end end

! モデル/user.rb

class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable before_save { self.email.downcase! } validates :name, presence: true, length: { maximum: 50 } validates :email, presence: true, length: { maximum: 255 }, format: { with: /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i }, uniqueness: { case_sensitive: false } validates :furiganaName, presence: true, length: { maximum: 100 }, format: { with: /\A[ぁ-ん]+\z/u } validates :telephone_number, numericality: { only_integer: true }, length: { maximum:11 }, format: { with: /\A[0-9]+\z/ } validates :password, presence: true, length: { minimum: 6 } validates :self_introduction, presence: false, length: { maximum: 1000 } mount_uploader :image, ImageUploader has_secure_password has_many :plans has_many :relationships has_many :followings, through: :relationships, source: :follow has_many :reverses_of_relationship, class_name: 'Relationship', foreign_key: 'follow_id' has_many :followers, through: :reverses_of_relationship, source: :user has_many :favorites, dependent: :destroy has_many :favorite_plans, through: :favorites, source: :plan has_many :entries, dependent: :destroy has_many :messages, dependent: :destroy def follow(other_user) unless self == other_user self.relationships.find_or_create_by(follow_id: other_user.id) end end def unfollow(other_user) relationship = self.relationships.find_by(follow_id: other_user.id) relationship.destroy if relationship end def following?(other_user) self.followings.include?(other_user) end def favorite(plan) self.favorites.find_or_create_by(plan_id: plan.id) end def unfavorite(plan) favorite = self.favorites.find_by(plan_id: plan.id) favorite.destroy if favorite end def is_favorite?(plan) self.favorite_plans.include?(plan) end end

!一通りメッセージ機能が形成できましたら、応募済みの方は再度応募ボタンを押せないようにしたいと考えております。

私自身で考えてみたのは、rooms.controllerの

@entry1 = Entry.create(room_id: @room.id, user_id: current_user.id) @entry2 = Entry.create(params.require(:entry).permit(:user_id, :room_id).merge(room_id: @room.id))

のuser_idをplan.user_idにして、掲載者(plan.user)を特定させなければいけないのかなと思ったのですが、エラーが発生してしまいました。

説明や解釈が拙い部分が多くあると思いますが、
ご指導ご鞭撻のほどよろしくお願いいたします。

・追加
application_controller

class ApplicationController < ActionController::Base include SessionsHelper include Pagy::Backend private def require_user_logged_in unless logged_in? redirect_to login_url end end end
NoMethodError in RoomsController#show undefined method `authentication_keys' for User:Class Extracted source (around line #22): 20 21 22 23 24 25 send(name, *arguments, &block) else super end end Rails.root: /home/ubuntu/environment/tsunageru Application Trace | Framework Trace | Full Trace activerecord (6.1.6) lib/active_record/dynamic_matchers.rb:22:in `method_missing' devise (4.8.1) lib/devise/failure_app.rb:104:in `i18n_message' devise (4.8.1) lib/devise/failure_app.rb:84:in `redirect' devise (4.8.1) lib/devise/failure_app.rb:43:in `respond' actionpack (6.1.6) lib/abstract_controller/base.rb:228:in `process_action' actionpack (6.1.6) lib/abstract_controller/base.rb:165:in `process' actionpack (6.1.6) lib/action_controller/metal.rb:190:in `dispatch' actionpack (6.1.6) lib/action_controller/metal.rb:238:in `block in action' devise (4.8.1) lib/devise/failure_app.rb:23:in `call' devise (4.8.1) lib/devise/delegator.rb:7:in `call' warden (1.2.9) lib/warden/manager.rb:143:in `call_failure_app' warden (1.2.9) lib/warden/manager.rb:129:in `process_unauthenticated' warden (1.2.9) lib/warden/manager.rb:44:in `call' rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call' rack (2.2.3) lib/rack/etag.rb:27:in `call' rack (2.2.3) lib/rack/conditional_get.rb:27:in `call' rack (2.2.3) lib/rack/head.rb:12:in `call' actionpack (6.1.6) lib/action_dispatch/http/permissions_policy.rb:22:in `call' actionpack (6.1.6) lib/action_dispatch/http/content_security_policy.rb:19:in `call' rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context' rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call' actionpack (6.1.6) lib/action_dispatch/middleware/cookies.rb:689:in `call' activerecord (6.1.6) lib/active_record/migration.rb:601:in `call' actionpack (6.1.6) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call' activesupport (6.1.6) lib/active_support/callbacks.rb:98:in `run_callbacks' actionpack (6.1.6) lib/action_dispatch/middleware/callbacks.rb:26:in `call' actionpack (6.1.6) lib/action_dispatch/middleware/executor.rb:14:in `call' actionpack (6.1.6) lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call' actionpack (6.1.6) lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call' web-console (4.2.0) lib/web_console/middleware.rb:132:in `call_app' web-console (4.2.0) lib/web_console/middleware.rb:19:in `block in call' web-console (4.2.0) lib/web_console/middleware.rb:17:in `catch' web-console (4.2.0) lib/web_console/middleware.rb:17:in `call' actionpack (6.1.6) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' railties (6.1.6) lib/rails/rack/logger.rb:37:in `call_app' railties (6.1.6) lib/rails/rack/logger.rb:26:in `block in call' activesupport (6.1.6) lib/active_support/tagged_logging.rb:99:in `block in tagged' activesupport (6.1.6) lib/active_support/tagged_logging.rb:37:in `tagged' activesupport (6.1.6) lib/active_support/tagged_logging.rb:99:in `tagged' railties (6.1.6) lib/rails/rack/logger.rb:26:in `call' sprockets-rails (3.4.2) lib/sprockets/rails/quiet_assets.rb:13:in `call' actionpack (6.1.6) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' actionpack (6.1.6) lib/action_dispatch/middleware/request_id.rb:26:in `call' rack (2.2.3) lib/rack/method_override.rb:24:in `call' rack (2.2.3) lib/rack/runtime.rb:22:in `call' activesupport (6.1.6) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' actionpack (6.1.6) lib/action_dispatch/middleware/executor.rb:14:in `call' actionpack (6.1.6) lib/action_dispatch/middleware/static.rb:24:in `call' rack (2.2.3) lib/rack/sendfile.rb:110:in `call' actionpack (6.1.6) lib/action_dispatch/middleware/host_authorization.rb:142:in `call' webpacker (5.4.3) lib/webpacker/dev_server_proxy.rb:25:in `perform_request' rack-proxy (0.7.2) lib/rack/proxy.rb:67:in `call' railties (6.1.6) lib/rails/engine.rb:539:in `call' puma (5.6.4) lib/puma/configuration.rb:252:in `call' puma (5.6.4) lib/puma/request.rb:77:in `block in handle_request' puma (5.6.4) lib/puma/thread_pool.rb:340:in `with_force_shutdown' puma (5.6.4) lib/puma/request.rb:76:in `handle_request' puma (5.6.4) lib/puma/server.rb:441:in `process_client' puma (5.6.4) lib/puma/thread_pool.rb:147:in `block in spawn_thread' Request Parameters: {"id"=>"2"} Toggle session dump Toggle env dump Response Headers: None

!修正
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
をuser.rbに追加したときに応募を押した際、deviseのサインインが作動し、ログインが2重になりました。
もしかすると、deviseがいらないのかなとも思い始めました。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

winterboum

2022/09/23 22:12

画像だと潰れてて読めません
no1knows

2022/09/24 00:12

application_controller.rbも追記をお願いします。
退会済みユーザー

退会済みユーザー

2022/09/24 03:58

画像の修正、application_controller.rbの追記を行わせていただきました。
winterboum

2022/09/24 07:51

エラーメッセージはテキストでほしいんですよね、どのfileのどの行で起きたか、とか色々情報があるので。 画像では super の行でエラーだと言ってますね。 でもあなたが「エラーが発生したファイルがこちらです。」にはそんな行無いですね。
no1knows

2022/09/24 10:02

Devise利用でUserクラスのauthentication_keyエラーなので、Deviseの設定まわりが気になりました。 暫定的にrooms_controller.rbのbefore_action :authenticate_user!を削除して、application_controller.rbにbefore_action :authenticate_user!を追加するとどうなりますか? (この設定をすると全ページログインしていないと見れないようになります)
winterboum

2022/09/24 13:18

エラーがなになのか、をきちんと解析しないと。。。 エラーメッセージを全文載せましょう
退会済みユーザー

退会済みユーザー

2022/09/24 13:25

誠に申し訳ありません。 エラーメッセージを全文、載せて頂きました。
no1knows

2022/09/24 14:16

「undefined method `authentication_keys' for User:Class」で検索するとすごい古い記事が出てきました。参考になるかはわからないですが、やはりDevise関連のようです。 https://github.com/shenoudab/devise_couch/issues/13 で、「authentication_keys」で検索すると、メール以外でサインインするような記事が沢山でてくるので、そこらへんの設定が気になりますね。
退会済みユーザー

退会済みユーザー

2022/09/24 14:49

ありがとうございます。 試してみます。
winterboum

2022/09/24 23:27

やっぱ Deviseの深いところか。 私はDevise使ってるだけで詳しくはないのですが、私のDeviseを使ってるアプリで User.first.authentication_keys としても undefined method `authentication_keys' for #<User、、、 がでます。 Deviseの導入でなにかイレガルなことしていないかな。 インストールで何をやったか、のがじゅうようではありますが、とりあえずmodels/user.rb のせてみて。
退会済みユーザー

退会済みユーザー

2022/09/25 01:43

ユーザーモデルを追記させていただきました。 Deviseに関しましては、gemfileからgem 'devise'を記入し、bundle installを行いました。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Ruby

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

Ruby on Rails

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