0

我有一个看起来像这样的模型

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 时,一切正常,但根据其他示例,我发现它应该同时适用。这是一个错误还是我做错了什么?

链接到他们说它应该起作用的示例:

如何使用 attr_accessible 创建工厂?

https://groups.google.com/forum/#!topic/factory_girl/gjLXp96Acyg

https://gist.github.com/334413/2a0f60a9afbff321d3e96727ec17bab53c484128

4

1 回答 1

1

只要有问题的字段存在于您的数据库中,两者都应该工作。attr_accessibleActiveRecord 为在相关数据库表中定义的属性生成访问器(FactoryGirl 所依赖的) 。

于 2013-06-22T16:39:42.177 回答