Mysql
 sql >> Base de données >  >> RDS >> Mysql

ActiveModel ::MissingAttributeError :impossible d'écrire l'attribut inconnu `user_id`

Vous avez la mauvaise migration - au lieu d'ajouter un user_id aux comments vous ajoutez users.commed .

Oops. Cela peut arriver aux meilleurs d'entre nous.

Commençons donc par créer une migration pour corriger cette erreur :

class RemoveCommedFromUsers < ActiveRecord::Migration
  def change
    remove_column :users, :commed # will also remove the index
  end
end

Bien sûr, si l'application n'a pas été déployée, vous pouvez simplement supprimer la migration incriminée et exécuter rake db:reset

Créons donc la bonne migration

rails g migration AddUserToComments user:belongs_to

Ce qui génère la migration suivante :

class AddUserToComments < ActiveRecord::Migration
  def change
    add_reference :comments, :user, index: true
  end
end

add_reference crée un index et une clé étrangère en un seul passage.