播种失败:"字段不能为空白"但是我正在播种一个值

时间:2016-01-16 11:18:46

标签: ruby-on-rails validation seeding

我有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从字符串更改为整数,则可以正常工作。我该怎么办?因为它不是一个整数,是不是......?

2 个答案:

答案 0 :(得分:1)

Rails enum期望相应的db列为整数,但是你的是一个字符串。

因此,要么更改为整数,要么使用值验证替换枚举。

答案 1 :(得分:0)

尝试并隔离错误。看看这个没有任何问题的种子是否可以继续分段?

article_type = "type1"
book.articles.create!( title: title,
                         article_type: article_type )