我收到以下错误
尝试在MessageController中保存消息对象时。这是我的控制器。
class MessagesController < ApplicationController
def new
@message = Message.new
@user = current_user
end
def create
@message = Message.new(message_params)
@message.user = current_user
@message.user_id = current_user.id
if @message.user_email.nil?
@message.user_email = current_user.email
end
if @message.save
# UserMailer.send_email_to_admin(current_user.email).deliver
else
# redirect_to new_message_path(@message)
end
end
private
def message_params
params.require(:message).permit(:subject, :body, :user_email)
end
end
这是我的模特。
class Message < ActiveRecord::Base
belongs_to :user
validates :user_email, presence: true
validates :subject, presence: true, length: { minimum: 5 }
validates :message, presence: true, length: { minimum: 10 }
end
我不知道为什么会出现此错误,因为我的应用中没有名为“message”的方法。任何帮助将不胜感激!
答案 0 :(得分:3)
在您的模型中,您对message
字段进行了验证:
validates :message, presence: true, length: {minimum: 10}
这应该是您body
字段的验证吗?:
validates :body, presence: true, length: {minimum: 10}
在保存记录之前,验证程序正在调用message
实例(Message
)上的@message
方法来检查其存在并对其进行验证。由于您没有名为message
的列但已对其进行验证,因此您将获得NoMethodError
。