用户名不存在的未知属性username用户名存在

问题描述:

在我的rails项目上,我尝试从电子邮件登录切换到用户名登录与设计宝石。 据我做了所有步骤但是当我做黄瓜我看到这样的输出:用户名不存在的未知属性username用户名存在

Given a user "Aslak" exists   
# features/step_definitions/login_steps.rb:16 
    unknown attribute: username (ActiveRecord::UnknownAttributeError) 
    ./features/step_definitions/login_steps.rb:17:in `/^a user "(.*?)" exists$/' 
    features/login.feature:4:in `Given a user "Aslak" exists' 

的给定用户¨Aslak¨存在看起来像这样:

Given /^a user "(.*?)" exists$/ do |user_name| 
    @user = User.create!(:username => user_name, :password => "s3cr3t") 
end 

但是当我做轨道Ç

u = User.first 

我看到这样的输出:

=> #<User id: 1, email: "[email protected]", encrypted_password: "$2a$10$XjYgPtD4Ol4/sEpe934O6.yPcxs.jBF.m9SNTV.qhJp4...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 3, current_sign_in_at: "2012-11-05 20:27:44", last_sign_in_at: "2012-11-05 19:35:00", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", created_at: "2012-11-03 20:21:54", updated_at: "2012-11-06 07:58:36", username: "asLak"> 

所以它看起来像用户名是存在的。

任何一个想法如何解决这个问题?

鲁洛夫

看来你需要比较不区分大小写的,而红宝石比较大小写敏感的默认。这应该在这里解决您的问题:

Given /^a user "(.*?)" exists$/ do |user_name| 
    @user = User.create!(:username => user_name.downcase! , :password => "s3cr3t") 
end 

你运行运行测试之前迁移(下)?

env RAILS_ENV=test rake db:migrate 
+0

对不起,但它不能解决我的问题。错误消息仍然存在。 –

+0

当我删除:username => user_name部分时,错误消失。所以这似乎是一个问题。但我不明白为什么那部分是问题 –

+0

请确保您在users表中有一个用户名列,并且它符合rails约定。 – hd1

是否有您编辑现有的迁移和忘了运行rake db:test:clone将更改传播到测试数据库的任何机会呢?

rails c运行在开发中,它使用另一个数据库。改为运行rails c test后检查User.first的结果。