Rails表示不保存’Type:’字段

我生成了一个简单的Post scaffold,它有title:string body:text category:string 。 我后来在模型中添加了type:string (并执行了迁移),并在new.html.erb和edit.html.erb中添加了选择字段。 我还为所有这些字段添加了validation。

   "Select post type" %> 

当我尝试创建post时,它给了我:

“以下字段存在问题:类型不能为空类型不包含在列表中”

即使我做出选择。 我错过了一些明显的东西吗?

从Post类中选择代码:

 TYPES = [ ["Job", "job"], ["Volunteer", "vol"] ] validates_presence_of :title, :body, :category, :type validates_inclusion_of :category, :in => CATEGORIES.map {|disp, value| value} validates_inclusion_of :type, :in => TYPES.map {|disp, value| value} 

type字段是用于单表inheritance(STI)的保留字段。 您必须重命名该字段。

有关更多详细信息,请参阅此文章

编辑:更改链接以指向Matchu提供的文章。

如果你真的想要,你可以通过将inheritance_column设置为其他东西来在Rails 4中使用名为type的字段:

 class Product < ActiveRecord::Base self.inheritance_column = :ruby_type end 

在Rails 3及更低版本中,请使用方法set_inheritance_column