我有模特:
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
答案 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是模型中的新属性,但我忘了在测试环境中迁移数据库。