2016-10-09 4 views
1

В производстве у меня есть модель Категория. Когда я пытаюсь создать категорию в веб-сайте, я получаю следующую ошибкуРельсы, значение null в столбце нарушает не-нулевое ограничение

ActiveRecord::StatementInvalid (PG::NotNullViolation: ERROR: null value in column "name" violates not-null constraint 

миграция выглядит следующим образом

class CreateCategories < ActiveRecord::Migration 
    def up 
    create_table :categories do |t| 
     t.references :supercategory,  index: true 
     t.string :name 

     t.timestamps null: false 
    end 
    Category.create_translation_table! name: :string 
    end 
    .... 
end 

И схемы

create_table "categories", force: :cascade do |t| 
    ... 
    t.string "name" 
    t.datetime "created_at",   null: false 
    t.datetime "updated_at",   null: false 
    t.string "slug" 
    t.index ["restaurant_id"], name: "index_categories_on_restaurant_id", using: :btree 
    t.index ["slug"], name: "index_categories_on_slug", unique: true, using: :btree 
    t.index ["supercategory_id"], name: "index_categories_on_supercategory_id", using: :btree 
    end 

Любые идеи, что может быть причиной Ошибка? Благодаря! Если вам нужно больше кода, просто спросите.

EDIT В PARAMS послал

Параметры: { "utf8" => "✓", "authenticity_token" => "no3uGNSYkgClG + y6y9Y =", "категория" => { "имя" => «Кофе», «age_restriction» => «0», «available_all_day» => «0», «supercategory_id» => «", "avatar" => #, @ original_filename = "coffee.JPG" , @ content_type = "image/jpeg", @ headers = "Content-Disposition: form-data; name = \" category [avatar] \ "; filename = \" coffee.JPG \ "\ r \ nContent-Type : image/jpeg \ r \ n ">}, " commit " => «Создать категорию», «remotipart_submitted» => «true», «X-Requested-With» => «IFrame», «X-Http-Accept» => «text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, /; д = 0,01" , „restaurant_id“ => „Килиманджаро-кофе“}

EDIT Я попытался создать категорию из консоли, и я обнаружил, что модель не имеет столбец имен. Кажется, как это не был перенесен правильно.Я сбросил, создал и перенесла базу данных снова, но столбец все еще не появляется. Любые идеи, откуда это взялось?

+0

Вы можете добавить точку останова в контроллер и осмотреть новый объект 'category', прежде чем он будет сохранен? –

+0

Я нахожусь в производстве, и там появляется ошибка. Я добавил отправленные параметры. –

ответ

0

Трудно представить, как вы могли получить эту ошибку без таблицы PostgreSQL, этот столбец установлен не равным нулю, поэтому я подозреваю, что вы не используете базу данных, которую, по вашему мнению, используете.

Вы можете проверить, какие колонки активной записи считает, установлены не нуль с этим:

Category.columns.reject{|c| c.null}.map(&:name) 
+0

Вывод вашей команды был => ["id", "created_at", "updated_at"]. Я полагаю, что требование null не относится к модели категории, где я проверяю: имя, наличие: true –

+0

Это не привело бы к возникновению ошибки PG ActiveRecord. Вы получите сообщение об ошибке #save! но #save (no bang on the end) просто вернет false. –

+0

Вы запустили эту команду в производственной системе? –

Смежные вопросы