#User的未定义方法`first_name ='

时间:2013-08-12 00:09:57

标签: ruby-on-rails

我有模特:

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

 end

但是,我有一个问题=&gt;

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

文件有错误 测试/功能/ users_controller_test.rb

require 'test_helper'

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

FactoryGirl文件 测试/工厂/用户/ RB

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

3 个答案:

答案 0 :(得分:2)

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

rake db:test:load

答案 1 :(得分:0)

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

中替换

部分

setup do
  @user = create :user
end

通过

before { @user = create :user }

或更好:

let(:user) { create :user }

但是,如果您选择最后一种技术,则必须在此文件中重命名@user所有user,并验证您的方案未使用user局部变量。如果这还不清楚你坚持使用before技术。

答案 2 :(得分:0)

错误&#34;未定义方法`attribute =&#39;为#&#34;您似乎忘记了在测试环境中迁移数据库。跑吧

RAILS_ENV=test rake db:migrate

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