gpt4 book ai didi

ruby-on-rails - rspec 用户测试给出 "undefined local variable or method ` confirmed_at' "

转载 作者:数据小太阳 更新时间:2023-10-29 07:14:41 25 4
gpt4 key购买 nike

我的 rspec 测试给了我

 NameError:
undefined local variable or method `confirmed_at' for #<User:0xca6ff98>

我的用户规范是:

require 'spec_helper'

describe User do

before(:each) do
@user = Factory(:user)
end
# Factory will make sure that in the future if attributes are added the tests below don't break
# Just as long as the Factory is updated for the new attributes as appropriate.

context "email is null" do
it "record is invalid " do
@user.name = nil
@user.should_not be_valid
end
end

context "email is unique" do
it "record is valid " do
@user2 = Factory(:user)
@user2 = @user.email
@user2.should_not be_valid
end
end

end

我找不到任何对 confirmed_at 的引用

我设计了 1.4.8我的用户迁移是:

class DeviseCreateUsers < ActiveRecord::Migration
def self.up
create_table(:users) do |t|
t.database_authenticatable :null => false
t.recoverable
t.rememberable
t.trackable

# t.encryptable
# t.confirmable
# t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
# t.token_authenticatable


t.timestamps
end

add_index :users, :email, :unique => true
add_index :users, :reset_password_token, :unique => true
# add_index :users, :confirmation_token, :unique => true
# add_index :users, :unlock_token, :unique => true
# add_index :users, :authentication_token, :unique => true
end

def self.down
drop_table :users
end
end

我的用户表是:

mysql> describe users;
+------------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| email | varchar(255) | NO | UNI | | |
| encrypted_password | varchar(128) | NO | | | |
| reset_password_token | varchar(255) | YES | UNI | NULL | |
| reset_password_sent_at | datetime | YES | | NULL | |
| remember_created_at | datetime | YES | | NULL | |
| sign_in_count | int(11) | YES | | 0 | |
| current_sign_in_at | datetime | YES | | NULL | |
| last_sign_in_at | datetime | YES | | NULL | |
| current_sign_in_ip | varchar(255) | YES | | NULL | |
| last_sign_in_ip | varchar(255) | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
| last_name | varchar(255) | YES | | NULL | |
| first_name | varchar(255) | YES | | NULL | |
+------------------------+--------------+------+-----+---------+----------------+

最佳答案

看起来您在某个地方错过了 Devise 的“可确认”配置。您可以自己添加缺少的三个列或尝试类似的操作(请参阅 this thread 底部附近 Reza.Hashemi 的消息:

$ rails g migration addconfirmable

然后将迁移编辑为:

def self.up 
change_table(:users) do |t|
t.confirmable
end
end

最后,通常:

$ rake db:migrate

我认为上面的过程应该添加你的三列:

  • confirmed_at :datetime
  • confirmation_token :string
  • confirmation_sent_at :datetime

给你。或者您可以手动完成。

关于ruby-on-rails - rspec 用户测试给出 "undefined local variable or method ` confirmed_at' ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7857070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com