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

时间:2010-02-19 02:02:38

标签: ruby-on-rails

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

<%= f.label :type %>
<%= f.select :type, Post::TYPES, :prompt => "Select post type" %>

当我尝试创建帖子时,它会给我:

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

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

从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}

2 个答案:

答案 0 :(得分:3)

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

有关详细信息,请参阅this文章

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

答案 1 :(得分:0)

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

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

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