PG::ForeignKeyViolation: ERROR: insert or update on table “posts” violates foreign key constraint “fk_rails_ac52d45g3n”

386
07 июня 2017, 05:37

Собираю данные формы:

data = new FormData()
data.append('post[title]', _this.post.title)
data.append('post[category_id]', _this.post.category_id)
data.append('post[content]', _this.post.content)

И отправляю:

this.$http.patch('/posts/' + this.id, data)

В форме есть поле с именем category_id. Оно может быть пустое. То есть передается в экшен значение null.

Это обработчик:

def update
    @post.update_attributes!(post_params)
end
private
def find_post
    @post = Post.find(params[:id])
end
def post_params
    allowed = %i[title category_id content]
    params.require(:post).permit(*allowed)
end

Ошибку вызывает сохранение данных. Вот полный текст ошибки, из которого становится ясно, что проблема в поле category_id. Если его удалить из permit, то ошибка пропадает и данные сохраняются. Притом сохраняются значения null, передаваемые JS.

PG::ForeignKeyViolation: ERROR: insert or update on table "posts" violates foreign key constraint "fk_rails_ac52d45g3n" DETAIL: Key (category_id)=(0) is not present in table "categories".

Как все же правильно отправлять форму, чтобы не было проблем со связями (category_id) и не было сохранения null в таблицу как простого текста?

READ ALSO
JS код - Копирование из input

JS код - Копирование из input

Есть кодОн работает только для идентификаторов - input и bCopy

499
JavaScript: конфликт двойной и тройной комбинации клавиш

JavaScript: конфликт двойной и тройной комбинации клавиш

В этом эксперименте исследуется конфликт двойной и тройной комбинации клавиш (например alt+t и alt+shift+t)По замыслу, при нажатии alt+t должен измениться...

380
Вывод списка объектов яндекс.карты в таблицу

Вывод списка объектов яндекс.карты в таблицу

Использую этот скрипт от API яндекскарт

699
Ограничить range slider

Ограничить range slider

Не совсем получается ограничить движение маркера по слайдеру

316