Q&A
前提
newメソッドで作成したインスタンスにsaveメソッドを使おうとした際に"NoMethodError"が出てしまった。
実現したいこと
- エラーが出ている原因を突き止めたい
発生している問題・エラーメッセージ
console
1NoMethodError: undefined method `text' for #<Message:0x00007f914c8b5440> 2Did you mean? test 3from /Users/ユーザー名/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activemodel-6.0.6/lib/active_model/attribute_methods.rb:432:in `method_missing' 4
saveメソッドを用いたのにも関わらず、なぜかundefined method 'text'
とtextメソッドが実行されようとしていたようなメッセージが返ってきました。この他、dummyなど存在しないメソッドで走らせるとundefined method 'dummy'
のように正しいメソッド名を参照したエラーになりますが、存在する他のメソッド(valid?を試しました)ではsaveと同じメッセージが返ってきます。
他コントローラーでもActiveRecordメソッドを用いていますが、このようなエラーは起こりません。
該当のソースコード
app/controllers/messages_contoller.rb
1class MessagesController < ApplicationController 2 def create 3 @room = Room.find(params[:room_id]) 4 message = @room.messages.new(message_params) 5 if message.save # この行でエラーが出ます 6 redirect_to room_messages_path(@room) 7 else 8 render :index 9 end 10 end 11 12 private 13 14 def message_params 15 params.require(:message).permit(:content).merge(user_id: current_user.id) 16 end 17end 18
app/models/message.rb
1class Message < ApplicationRecord 2 belongs_to :room 3 belongs_to :user 4 5 validates :text, presence: true 6end 7
補足情報(FW/ツールのバージョンなど)
- Rails: 6.0.6
- Ruby: 2.6.5
回答1件
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2023/01/17 12:35
2023/01/17 13:07