Rails 5设计在创建时不将用户名传递给数据库

时间:2018-03-21 03:32:40

标签: ruby-on-rails postgresql devise ruby-on-rails-5

我已经使用Devise in Rails 5设置了一个新应用,并添加了一个自定义字段"用户名"到我的用户模型。我在用户名列的数据库迁移中添加了一个验证:username,presence:true和一个非null规范。

当我提交我的新用户表单时,它会在模型​​上传递用户名验证,但在列'用户名'中输出了一个Postgres数据库错误" null值违反了非空约束"。

此外,当我尝试使用User.create在控制台中创建新用户时!({username:' Test',email:' test@gmail.com' ;, password :' 12345',password_confirmation:' 12345'})它通过了模型验证,但在用户名列上抛出了与null值相同的Postgres数据库错误。

这表示用户名已传递给模型进行验证但未传递到数据库,因此Postgres正在接收空值并抛出非空约束错误。

在让Devise接受用户模型上的自定义字段时,是否缺少一个步骤?我已经遵循了从谷歌搜索中找到的所有说明,但我似乎遇到了与其他人不同的问题。

1 个答案:

答案 0 :(得分:0)

哇,我是个白痴。我有一个特殊的非db字段用于邀请代码,需要在User模型中使用attr_accessor才能使其正常工作,并且我从旧Rails时代的习惯中添加了attr_accessor的用户名。从模型中删除用户名attr_accessor突然之间一切正常。卫生署!