2010-02-19 69 views
1

我生成了一個簡單的Post腳手架,它有title:string body:text category:string。我後來向模型中添加了type:string(並執行了遷移),並在new.html.erb和edit.html.erb中添加了選擇字段。我還爲所有這些字段添加了驗證。Rails form not not'類型:'字段

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

當我嘗試創建一個帖子它給了我:

「有與以下領域的問題: 類型不能爲空 類型不包括在列表中的」

即使我做出選擇。我在這裏錯過了很明顯的東西嗎

從後級的選擇代碼:

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} 
+0

你問你是否錯過了一些明顯的東西,所以......你是否在執行遷移後重新啓動服務器? :) – ghoppe 2010-02-19 02:06:37

+0

我確實。這是昨天發生的,因此係統已重新啓動。 – Jay 2010-02-19 02:28:56

回答

3

type字段是用於單表繼承(STI)中的保留字段。您必須重命名該字段。

參考this文章瞭解更多詳細信息,

編輯:改變了鏈接指向的文章Matchu提供。

+1

列出所有保留的Rails單詞:http://wiki.rubyonrails.org/rails/pages/ReservedWords – Matchu 2010-02-19 02:48:34

+0

我一直在尋找這個列表。謝謝。 – 2010-02-19 03:00:10

+0

這很有道理。謝謝! – Jay 2010-02-19 06:09:22

0

如果你真的想,你可以通過設置inheritance_column爲其他使用領域Rails中4名爲類型

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

在Rails 3及以下,使用方法set_inheritance_column代替。