“验证错误:密码不能为空”但表单中没有密码字段
Posted
技术标签:
【中文标题】“验证错误:密码不能为空”但表单中没有密码字段【英文标题】:"Validation Error: Password can't be blank" but no password field in form 【发布时间】:2016-11-15 00:47:38 【问题描述】:我有一个表格可以将信息保存到我网站的数据库中。即使表单不需要登录,每当我尝试提交表单时,我都会收到错误消息“验证失败:密码不能为空”。我不确定为什么会发生这种情况,因为表单中没有密码字段。这是控制器的代码,错误来自保存行:
def create
@newinstructor = Instructor.new
@newinstructor_app = InstructorApp.where(first_name: params['instructor']['first_name']).where(last_name: params['instructor']['last_name'])
@newinstructor.first_name = params['instructor']['first_name']
@newinstructor.last_name = params['instructor']['last_name']
@newinstructor.story = params['instructor']['story']
@newinstructor.save!
这是instructor.rb:
class Instructor < ActiveRecord::Base
has_many :activities
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :activities
has_one :instructor_app
end
【问题讨论】:
仅供参考,如果您使用代码编辑原始帖子会更容易阅读 【参考方案1】:您应该能够通过以下任一方法进行修复:
从您的Instructor
中删除:validatable
选项,设计选项现在应该是:
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable
或
将以下方法添加到您的Instructor
def password_required?
false
end
如果有帮助请告诉我
【讨论】:
【参考方案2】:您的讲师模型中似乎有像 :database_authenticatable
这样的设计模块。您看不到它,但 Devise 预计默认情况下会有一个密码字段。如果您的讲师表格没有登录,那么一种选择是简单地删除设计模块。如果你有一个,Devise 通常用于 User 模型,用于在用户最初注册和/或登录时进行身份验证
【讨论】:
以上是关于“验证错误:密码不能为空”但表单中没有密码字段的主要内容,如果未能解决你的问题,请参考以下文章