用户名不存在的未知属性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
答
是否有您编辑现有的迁移和忘了运行rake db:test:clone
将更改传播到测试数据库的任何机会呢?
rails c
运行在开发中,它使用另一个数据库。改为运行rails c test
后检查User.first
的结果。
对不起,但它不能解决我的问题。错误消息仍然存在。 –
当我删除:username => user_name部分时,错误消失。所以这似乎是一个问题。但我不明白为什么那部分是问题 –
请确保您在users表中有一个用户名列,并且它符合rails约定。 – hd1