工厂女孩和黄瓜的Rails给出了未定义的方法错误

时间:2013-06-22 16:23:13

标签: ruby ruby-on-rails-3 cucumber factory-bot

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

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

1 个答案:

答案 0 :(得分:1)

如果数据库中存在相关字段,则应该工作。 ActiveRecord为attr_accessible中指定的属性生成访问器(FactoryGirl所依赖的访问器),但前提是它们是在关联的数据库表中定义的。