以下の様なmessage model
を作成しているのですが、save
が実行されません。binding.pry
でデバックすると、save
の手前までデータは入っているのですが、なぜsave
されないのか分からず、お分かりの方、ご指摘いただけますと助かります。
saveがされずにcontroller
内のelse
で記載するflash.now.alert = '入力に誤りがあります。'
が表示されてしまいます。
#binding.pryをsaveの前で実行した結果 pry(#<User::MessagesController>)> @message => #<UserMessage:0x007fb394729c88 id: nil, user_id: 2, adviser_id: nil, root_id: nil, parent_id: nil, type: "UserMessage", status: "new", body: "テストだよん", discarded: false, deleted: false, created_at: nil, updated_at: nil>
message model
とmessage
を継承したUserMessage
とAdviserMessage
を作成。
ruby
1# == Schema Information 2# 3# Table name: messages 4# 5# id :integer not null, primary key 6# user_id :integer not null 7# adviser_id :integer 8# root_id :integer 9# parent_id :integer 10# type :string not null 11# status :string default("new"), not null 12# body :text 13# discarded :boolean default(FALSE), not null 14# deleted :boolean default(FALSE), not null 15# created_at :datetime not null 16# updated_at :datetime not null 17# 18 19 20class Message < ApplicationRecord 21 belongs_to :user 22 belongs_to :adviser 23 belongs_to :root, class_name: 'Message', foreign_key: 'root_id' 24 belongs_to :parent, class_name: 'Message', foreign_key: 'parent_id' 25 26 validates :body, presence: true 27 validates :body, length: {maximum: 800, allow_blank: true } 28 29 before_create do 30 if parent 31 self.user = parent.user 32 self.root = parent.root || parent 33 end 34 end 35end 36 37class UserMessage < Message 38end 39 40class AdviserMessage < Message 41end
ruby
1class User::MessagesController < User::Base 2 def new 3 @message = UserMessage.new 4 end 5 6 def create 7 @message = UserMessage.new(user_message_params) 8 if params[:commit] 9 @message.user = current_user 10 binding.pry 11 if @message.save 12 flash.notice = 'メッセージを送信しました。' 13 redirect_to :user_root 14 else 15 flash.now.alert = '入力に誤りがあります。' 16 render action: 'new' 17 end 18 else 19 render action: 'new' 20 end 21 end 22 23 private 24 def user_message_params 25 params.require(:user_message).permit(:body) 26 end 27end
html
1<%= form_for @message, url: :user_messages do |f| %> 2 <%= render 'form', f: f %> 3 4 #_form.html 5<%= f.label :body, "コメント" %> 6<%= f.text_area :body %> 7---- 8 9 <%= f.submit '送信' %> 10 <%= link_to 'キャンセル', "#" %>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。