我有一个看起来像这样的模型
class Course < ActiveRecord::Base
attr_accessible :name
end
我的factory.rb看起来像这样
FactoryGirl.define do
factory :course do
name "testname"
end
end
然后当我在Cucumber中调用FactoryGirl.create(:course)时如此:
Given /^there are courses in the database$/ do
FactoryGirl.create(:course)
end
我收到一个未定义的方法错误:
undefined method `name=' for #<Course id: nil, created_at: nil, updated_at: nil> (NoMethodError)
当我在模型中使用attr_accessor而不是attr_accessible时,一切正常,但根据其他示例,我发现它应该同时适用于两者。这是一个错误还是我做错了什么?
链接到他们认为应该有效的示例:
How to create factories with attr_accessible?
https://groups.google.com/forum/#!topic/factory_girl/gjLXp96Acyg
https://gist.github.com/334413/2a0f60a9afbff321d3e96727ec17bab53c484128
答案 0 :(得分:1)
如果数据库中存在相关字段,则应该工作。 ActiveRecord为attr_accessible
中指定的属性生成访问器(FactoryGirl所依赖的访问器),但前提是它们是在关联的数据库表中定义的。