所以我有一个模型Post
,它在模型中声明了枚举,如下所示:
class Post < ActiveRecord::Base
enum draft_status: [:draft,:published]
我正在使用Rails 4,除了我的seeds.rb文件外,它在任何地方都可以正常工作。
post =Post.create!(user: user, content: "lorem ipsum", draft_status: 1)
每当我运行db:seed时,我都会遇到同样的错误:
ActiveModel :: MissingAttributeError:无法写入未知属性
draft_status
我甚至试过这样做:
post =Post.create!(user: user, content: "lorem ipsum", draft_status: 1)
post.published!
我仍然得到同样的错误。迁移存在,我可以在架构中看到该属性。此外,我的控制台中@post.draft_status
的所有呼叫都有效并且呼叫@post.published!
也有效。为什么我不能在这个枚举属性中播种?
更新:
因此,如果我运行rake db:setup
,它将播种我的整数值。我的理解是rake db:setup和rake db:seed之间的区别在于rake db:setup只创建数据库db:create
,加载模式db:schema:load
然后定期db:seed