【发布时间】:2018-03-21 03:32:40
【问题描述】:
我在 Rails 5 中使用 Devise 设置了一个新应用程序,并在我的用户模型中添加了一个自定义字段“用户名”。我在数据库迁移中为用户名列添加了对 :username、presence: true 和非空规范的验证。
当我提交我的新用户表单时,它通过了模型上的用户名验证,但引发了 Postgres 数据库错误“'用户名'列中的空值违反非空约束”。
此外,当我尝试使用 User.create 在控制台中创建新用户时!({username: 'Test', email: 'test@gmail.com', password: '12345', password_confirmation: '12345' }) 它通过了模型验证,但在用户名列上抛出了空值的相同 Postgres 数据库错误。
这表明用户名被传递给模型进行验证,但没有被传递给数据库,因此 Postgres 接收到一个空值并抛出一个非空约束错误。
在使 Devise 能够接受用户模型上的自定义字段方面,我是否缺少步骤?我已按照谷歌搜索的所有说明进行操作,但我遇到的问题似乎与其他人遇到的不同。
【问题讨论】:
-
只是为了测试一下,我从数据库列中删除了 not null 约束,并确认可以创建一个新用户,但用户名值没有传递到数据库,因此创建了一个值尽管通过了存在的模型验证,但为零:真。如何获取从模型传递到数据库的值?
标签: ruby-on-rails postgresql devise ruby-on-rails-5