views:

92

answers:

1

I generated a simple 'Post' scaffold which has title:string body:text category:string. I later added type:string (and performed the migration) to the model and added the selection fields in new.html.erb and edit.html.erb. I also added validation for all these fields.

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

When I try and create a post it gives me:

"There were problems with the following fields: Type can't be blank Type is not included in the list"

Even though I DO make a selection. Am I missing something obvious here?

Select code from Post class:

  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}
+1  A: 

The type field is a reserved field used for single table inheritance(STI). You have to rename the field.

Refer to this article for more details

Edit: Changed the link to point to the article provide by Matchu.

KandadaBoggu
List of all reserved Rails words: http://wiki.rubyonrails.org/rails/pages/ReservedWords
Matchu
I was looking for this list for some time. Thanks.
KandadaBoggu
That makes a lot of sense. Thanks!
Jay