使用User.create()时没有为Rails用户模型分配ID

时间:2017-04-16 21:18:02

标签: ruby-on-rails

我尝试寻找答案,但他们都在使用User.new等而不是创建。

在具有有效属性的控制台中使用User.create()时,我得到的用户使用nil表示ID,nil表示时间戳。

这是我的用户模型。

User.create(username:"oiuedhioj", email:"damhan@dagr.com",password:"test",password_confirmation:"test")

在rails控制台中我正在使用

<User id: nil, username: "Damhan", email: nil, created_at: nil, updated_at: nil, password_digest: "$2a$10$oGtRgcHigaHh/UCVX4QdM.AOgyGur8Oud5MyKZheUcQ..."> 

回来

token.id

3 个答案:

答案 0 :(得分:2)

尝试在rails控制台中创建。

返回没有Id或时间戳的记录是无效记录的标志。

user = User.create(...)
user.valid?
=> false
user.errors.any?
=> true

答案 1 :(得分:0)

您只将nameemail设置为可写。在该列表中包含id和其他属性。或者如果您的rails版本是4+,请在控制器中使用strong parameters

#user_controller.rb

...
private

def user_params
  params.require(:user).permit(:id, :name, :email ... )
end
...

答案 2 :(得分:0)

除了您已经获得的提示之外,还可以使用create!save!等代替其补充来获取错误异常,从而快速失败并因此更容易调试代码。如果您有充分的理由,请仅使用不含!的变体。因为你必须手动检查错误,所以有适当的例外通常会更加清晰。