Ruby on rails FactoryGirl使用零或零而不是字符串填充类型列
我有一个Ruby on rails FactoryGirl使用零或零而不是字符串填充类型列,ruby-on-rails,ruby,rspec,factory-bot,Ruby On Rails,Ruby,Rspec,Factory Bot,我有一个:topics表,其中有一个type列用于单表继承。我的有效主题类型之一应该是字符串“Announcement”。当我在topic.rb中的验证为: validates_inclusion_of :type, in: ["Announcement"] 当我的工厂在这里的时候 factory :topic group membership type Announcement end 我在规范错误中得到了以下信息: …类型:无。。。类型不包括在列表中 这是我的测试: it '
:topics
表,其中有一个type
列用于单表继承。我的有效主题类型之一应该是字符串“Announcement”。当我在topic.rb中的验证为:
validates_inclusion_of :type, in: ["Announcement"]
当我的工厂在这里的时候
factory :topic
group
membership
type Announcement
end
我在规范错误中得到了以下信息:
…类型:无。。。类型不包括在列表中
这是我的测试:
it 'should build a valid factory' do
topic = FactoryGirl.build(:topic)
expect(topic).to be_valid
end
FactoryGirl似乎喜欢类名声明而不是字符串“Announcement”,因为其他测试都是这样通过的。但当我切换到字符串进行良好测量时:
factory :topic
group
membership
type "Announcement"
end
我得到同样的错误,除了
type:0
而不是type:nil
我应该使用字符串还是类名?知道我的工厂为什么会得到0/nil值吗?第一个注释是正确的,您不能轻易地在Rails中使用
type
列,因为它用于单表继承(STI)
如果坚持使用类型列,则需要禁用STI功能
请参见第一个注释是正确的,您不能轻易地在Rails中使用
类型
列,因为它用于单表继承(STI)
如果坚持使用类型列,则需要禁用STI功能
请参见您是否尝试指定子类
factory :topic, :class => Announcement do
group
membership
end
我很确定这会起作用。您是否尝试过指定子类
factory :topic, :class => Announcement do
group
membership
end
我很确定这会起作用。我很确定
type
不能用作表中的列名。至少在没有某种干预的情况下是这样。我很确定type
不能用作表中的列名。至少在没有某种干预的情况下,我想用它来缝合当你不需要验证你的类型列时,它将从类名中自动填写。我想用它来缝合当你不需要验证你的类型列时,它将从类名中自动填写。