Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 存在用户名的未知属性用户名_Ruby On Rails 3_Devise_Cucumber - Fatal编程技术网

Ruby on rails 3 存在用户名的未知属性用户名

Ruby on rails 3 存在用户名的未知属性用户名,ruby-on-rails-3,devise,cucumber,Ruby On Rails 3,Devise,Cucumber,在我的rails项目中,我尝试使用Desive gem从电子邮件登录切换到用户名登录。 目前为止,我完成了所有步骤,但当我完成时,我看到了以下输出: Given a user "Aslak" exists # features/step_definitions/login_steps.rb:16 unknown attribute: username (ActiveRecord::UnknownAttributeError) ./features/step_defini

在我的rails项目中,我尝试使用Desive gem从电子邮件登录切换到用户名登录。 目前为止,我完成了所有步骤,但当我完成时,我看到了以下输出:

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'
=> #<User id: 1, email: "aslak@tamarawobben.nl", 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">
给定的用户Aslak exist如下所示:

Given /^a user "(.*?)" exists$/ do |user_name|
  @user = User.create!(:username => user_name, :password => "s3cr3t")
end
但是当我做rails c时

u = User.first 
我看到这个输出:

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'
=> #<User id: 1, email: "aslak@tamarawobben.nl", 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">
=>#
所以在我看来用户名是存在的

有人知道如何解决这个问题吗


Roelof

您似乎需要不区分大小写地进行比较,而ruby默认情况下会区分大小写进行比较。这应该可以解决您的问题:

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
在开发中运行,它使用另一个数据库。检查
User的结果。在运行
rails c test
之后,首先检查

很抱歉,但这并不能解决我的问题。错误消息仍然存在。当我删除:username=>user\u name部分时,错误就消失了。所以这似乎是个问题。但是我不明白为什么这部分是问题所在。请确保用户表中有一个username列,并且它符合rails的约定。抱歉,我有这个问题。首先查看User.first的输出。或者我误解了你的信息吗?不,在数据库中,是否有一个与rails约定相对应的列用户名,如果你不能从代码中找到答案,我会仔细研究一下