【问题标题】:unknown attribute username where username does exist用户名确实存在的未知属性用户名
【发布时间】:2012-11-06 18:27:19
【问题描述】:

在我的 Rails 项目中,我尝试使用 devise 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'

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

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

但是当我做 rails c 时

u = User.first 

我看到了这个输出:

=> #<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">

所以在我看来,用户名是存在的。

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

罗洛夫

【问题讨论】:

    标签: ruby-on-rails-3 devise cucumber


    【解决方案1】:

    您似乎需要不区分大小写进行比较,而 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
    

    【讨论】:

    • 很抱歉,但这并不能解决我的问题。错误信息仍然存在。
    • 当我删除 :username => user_name 部分时,错误消失了。所以那里似乎有问题。但我不明白为什么那部分是问题
    • 确保用户表中有一个用户名列,并且它符合 Rails 约定。
    • 对不起,我有。查看 User.first 的输出。还是我误解了你的信息
    • 不,在数据库本身中,是否有与 rails 约定相对应的列用户名,如果您无法弄清楚,我会去挖掘 devise source 以得到答案从你的代码中出来
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      相关资源
      最近更新 更多