我有一个表格可以将信息保存到我的网站的数据库中。即使表单不需要登录,每当我尝试提交表单时,我都会收到错误“验证失败:密码不能为空”。我不确定为什么会发生这种情况,因为表单中没有密码字段。以下是来自控制器的代码,错误来自保存行:
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
答案 0 :(得分:2)
您应该能够通过以下任一方法解决问题:
从:validatable
中移除Instructor
选项,设计选项现在应为:
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable
OR
将以下方法添加到Instructor
def password_required?
false
end
如果有帮助,请告诉我
答案 1 :(得分:1)
您的教师模型中看起来像:database_authenticatable
这样的Devise模块。你无法看到它,但Devise希望默认情况下会有一个密码字段。如果您的教师表单没有登录,那么一个选项就是删除设计模块。设计通常用于用户模型(如果有),用于在用户最初注册和/或登录时进行身份验证