0

我有模型:

class User < ActiveRecord::Base
  attr_accessible :login,
                  :password,
                  :email,
                  :first_name,
                  :middle_name,
                  :last_name,
                  :phone

 end

但是,我有一个问题=>

undefined method `first_name=' for #<User:0xa604c30>
...
test/functional/users_controller_test.rb:5:in `block in <class:UsersControllerTest>'
...

错误文件 test/functional/users_controller_test.rb

require 'test_helper'

class UsersControllerTest < ActionController::TestCase
  setup do
    @user = create :user
  end
...

FactoryGirl 文件 test/factories/users/rb

FactoryGirl.define do
  factory :user do
    login
    password
    first_name  "MyString"
    ...
  end
end
4

3 回答 3

2

如果您还没有这样做,请尝试使用最新的迁移更新您的测试数据库。rake db:test:load 从当前的 db/schema.rb 重新创建测试数据库。

rake db:test:load
于 2013-08-12T00:32:45.750 回答
0

错误“undefined method `attribute=' for #”似乎您忘记在测试环境中迁移数据库。赶紧跑

RAILS_ENV=test rake db:migrate

至于我,first_name 是模型中的新属性,但我忘记了在测试环境中迁移数据库。

于 2014-08-12T22:59:27.743 回答
0

尝试在您的文件 test/functional/users_controller_test.rb 中替换

那个部分

setup do
  @user = create :user
end

经过

before { @user = create :user }

或更好:

let(:user) { create :user }

但是,如果您选择最后一种技术,则必须在此文件中重命名 all @userby user,并确认您的方案未使用user局部变量。如果您还不清楚这一点,请坚持使用该before技术。

于 2013-08-12T00:32:19.483 回答