当前位置: 首页 > 知识库问答 >
问题:

ActiveRecord::StatementInvalid in Devise::RegistrationsController#create

岳承悦
2023-03-14

我正在尝试为我的Devise User模型添加一些额外的信息,如first_name、last_name、年龄、性别和城市。

当我填写注册表格并单击提交时,我会收到以下错误:

SQLite3::ConstraintExc的:不是NULL约束失败:users.first_name:插入到用户(电子邮件,encrypted_password,created_at,updated_at)值 (?, ?, ?, ?)

def each
  loop do
    val = step
    break self if done?
    yield val
  end

如果有任何用途,以下是参数:

参数:

{"utf8"=

以下是我的schema.rb以防万一:

create_table "users", force: :cascade do |t|
    t.string   "email",                  default: "", null: false
    t.string   "encrypted_password",     default: "", null: false
    t.string   "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer  "sign_in_count",          default: 0,  null: false
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.string   "current_sign_in_ip"
    t.string   "last_sign_in_ip"
    t.string   "confirmation_token"
    t.datetime "confirmed_at"
    t.datetime "confirmation_sent_at"
    t.string   "unconfirmed_email"
    t.string   "first_name",                          null: false
    t.string   "last_name",                           null: false
    t.integer  "age",                                 null: false
    t.string   "city",                                null: false
    t.string   "gender",                              null: false
    t.datetime "created_at",                          null: false
    t.datetime "updated_at",                          null: false
    t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
    t.index ["email"], name: "index_users_on_email", unique: true
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
  end

这也是我的user.rb模型:

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
end

共有2个答案

陶博耘
2023-03-14

您在电子邮件上有一个唯一的索引。错误的意思是您尝试保存的电子邮件在数据库中不为空。用户已收到此电子邮件。更改电子邮件,它应该可以工作。

  # to check for the user in the database 
  rails c 
  user = User.find_by_email("test.test@email.com") should bring back a user. 
东方修谨
2023-03-14

要在用户上设置尚未在设计中设置的附加列,我允许以这种方式访问我的Application ationContle ler。铁路4

before_filter :configure_permitted_parameters, if: :devise_controller?

protected

def configure_permitted_parameters
  # Only add some parameters
  devise_parameter_sanitizer.for(:accept_invitation).concat [:first_name, :last_name]
end

before_action :configure_permitted_parameters, if: :devise_controller?

protected

def configure_permitted_parameters
  devise_parameter_sanitizer.for(:sign_up) << :full_name
end

这将允许您将名字和姓氏与您设置的其他内容联系在一起。

导轨5

def configure_permitted_parameters
  additional_params = [:name, :company, :email_confirmation,   {addresses_attributes: [:address1, :address2, :city, :state, :zip, :country, :name]}]
  devise_parameter_sanitizer.permit(:sign_up, keys: additional_params)
  devise_parameter_sanitizer.permit(:account_update, keys: additional_params)
end
 类似资料:
  • ActiveRecord 是个轻量级的核心数据的活动记录。

  • Castle ActiveRecord框架是一个基于.NET的ORM框架,它实现了ActiveRecord设计模式。它本身就是基于NHibernate,只是封 装了NHibernate的大部分烦杂细节,对于需要持久化的类,只需继承自ActiveRecordBase类,并对类中的property赋予正确的 Attribute,而无需编写烦杂的mapping file。对于大型系统复杂的数据库逻辑,C

  • php-activerecord 是一个基于 ActiveRecord 设计模式 开发的开源PHP ORM库。它旨在大大简化与数据库的交互和减少手写 SQL 语句。它不同于其他的ORM,你不需要使用任何的代码生成器,也不费劲去手写、维护模型层的表映射文件。这个库的灵感来自Ruby on Rails ,因此它也借鉴Ruby on Rails 的想法和实现。另外,它也很容易地整合到ZF、CodeIgn

  • Use the ActiveRecord Integration facility if you want to benefit from the transaction management offered by the Automatic Transaction Management Facility and if you want to have the Container configur

  • 问题内容: 我正在尝试从使用的模型中找到一个项目,但这给了我错误 全程跟踪 的第5行是 可能是什么问题?您可以在上面遮一下光吗?可能的解决方案是什么 问题答案: 它所需要的只是 在您的文件中

  • ActiveRecord 高级技巧 阿里云 Rails 项目调整 RDS MySQL 编码为 utf8mb4 的详细步骤 Rails 中的事务处理 MySQL 用 UUID 作为主键,实际使用中有什么问题 ActiveRecord Object Instantiate ActiveRecord 的三种数据预加载形式 - includes, preload, eager_load, Preload、