我有Article
表的必填字段:
t.string :article_type, null: false
在模型中:
validates :article_type, presence: true
enum article_type: [ :type1, :type2, :type3, :type4, :type5 ]
在我的种子中,我有:
books = Book.all
books.each do |book|
title = Faker::Lorem.sentence(3)
article_type = ["type1", "type2", "type3", "type4", "type5"].sample
book.articles.create!( title: title,
article_type: article_type )
end
问题: create
行会产生错误:ActiveRecord::RecordInvalid: Validation failed: Article type can't be blank
。可能是什么导致了这个? (我可以确认.sample
行有效,并选择五种类型中的一种)
更新:如果我将article_type
从字符串更改为整数,则可以正常工作。我该怎么办?因为它不是一个整数,是不是......?
答案 0 :(得分:1)
Rails enum
期望相应的db列为整数,但是你的是一个字符串。
因此,要么更改为整数,要么使用值验证替换枚举。
答案 1 :(得分:0)
尝试并隔离错误。看看这个没有任何问题的种子是否可以继续分段?
article_type = "type1"
book.articles.create!( title: title,
article_type: article_type )