“验证错误:密码不能为空”但表单中没有密码字段

时间:2016-07-12 16:37:38

标签: ruby-on-rails database forms validation passwords

我有一个表格可以将信息保存到我的网站的数据库中。即使表单不需要登录,每当我尝试提交表单时,我都会收到错误“验证失败:密码不能为空”。我不确定为什么会发生这种情况,因为表单中没有密码字段。以下是来自控制器的代码,错误来自保存行:

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

2 个答案:

答案 0 :(得分:2)

您应该能够通过以下任一方法解决问题:

:validatable中移除Instructor选项,设计选项现在应为:

devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable

OR

将以下方法添加到Instructor

def password_required?
 false
end

如果有帮助,请告诉我

答案 1 :(得分:1)

您的教师模型中看起来像:database_authenticatable这样的Devise模块。你无法看到它,但Devise希望默认情况下会有一个密码字段。如果您的教师表单没有登录,那么一个选项就是删除设计模块。设计通常用于用户模型(如果有),用于在用户最初注册和/或登录时进行身份验证