Рельсы не сохраняют поле 'Тип:' - PullRequest
1 голос
/ 19 февраля 2010

Я сгенерировал простой 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" %>

Когда я пытаюсь создать пост, он дает мне:

"Были проблемы со следующими полями: Тип не может быть пустым Тип не входит в список "

Даже если я делаю выбор. Я что-то упускаю здесь очевидное?

Выберите код из класса сообщений:

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 ]

3 голосов
/ 19 февраля 2010

Поле type является зарезервированным полем, используемым для наследования одной таблицы (STI). Вы должны переименовать поле.

См. эту статью для более подробной информации

Редактировать: изменена ссылка для указания на статью, предоставленную Matchu.

0 голосов
/ 01 сентября 2013

Если вы действительно хотите, вы можете использовать поле с именем type в Rails 4, установив inheritance_column в другое значение:

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

В Rails 3ниже используйте метод set_inheritance_column .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...