这是我的spec/factories/nodes.rb
FactoryGirl.define do
factory :node do
sequence(:name) { |n| "Node#{n}" }
family_tree nil
user nil
media ""
end
end
这是我的node_spec.rb
require 'rails_helper'
describe Node do
it "is valid with a name" do
# node = Node.new(generate(:name))
expect(build(:node)).to be_valid
end
end
这是我得到的错误:
Failures:
1) Node is valid with a name
Failure/Error: expect(build(:node)).to be_valid
NoMethodError:
undefined method `primary_key' for String:Class
这是我的Node.rb
模型的架构:
# == Schema Information
#
# Table name: nodes
#
# id :integer not null, primary key
# name :string(255)
# family_tree_id :integer
# user_id :integer
# media_id :integer
# media_type :string(255)
# created_at :datetime
# updated_at :datetime
# circa :datetime
# is_comment :boolean
validates :name, presence: true
思想?
修改1
所以我刚刚删除了整个文件,并将其替换为现在可以正常工作:
FactoryGirl.define do
factory :node do
sequence(:name) { |n| "Node#{n}" }
end
end
我不知道什么有用。
答案 0 :(得分:2)
问题是之前的FactoryGirl
定义,它将空字符串分配给media
的{{1}}字段。您还没有分享Node
类的定义,但可能Node
是media
关联。这反过来需要从分配给ActiveRecord
的任何对象获取主键值,以便它可以在记录中设置media
字段。