Попробуй заменить t.belongs_to :category на t.belongs_to :category, references: :posts_categories.
Естественно, придется и в самих моделях указать правильный foreign_key и class_name, иначе работать не будет (несмотря на успешную миграцию). Помни, что Rails - это Convention Over Configuration, отступаешь от конвенций - будь добр указать кучу параметров (о существовании которых ты мог даже не подозревать).
ИМХО, не должны валиться ошибки на уровне БД. БД - это последний рубеж, и возникновение ошибок на ее уровне - это просчет в логике приложения. Почему бы не использовать валидации?