【问题标题】:"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

【问题讨论】:

  • 仅供参考,如果您使用代码编辑原始帖子会更容易阅读

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


【解决方案1】:

您应该能够通过以下任一方法进行修复:

从您的Instructor 中删除:validatable 选项,设计选项现在应该是:

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

将以下方法添加到您的Instructor

def password_required?
 false
end

如果有帮助请告诉我

【讨论】:

    【解决方案2】:

    您的讲师模型中似乎有像 :database_authenticatable 这样的设计模块。您看不到它,但 Devise 预计默认情况下会有一个密码字段。如果您的讲师表格没有登录,那么一种选择是简单地删除设计模块。如果你有一个,Devise 通常用于 User 模型,用于在用户最初注册和/或登录时进行身份验证

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-09
      • 2011-06-27
      • 2015-01-21
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      相关资源
      最近更新 更多