Mysql
 sql >> Datenbank >  >> RDS >> Mysql

ActiveModel::MissingAttributeError:Unbekanntes Attribut „user_id“ kann nicht geschrieben werden

Sie haben die falsche Migration - anstatt eine user_id hinzuzufügen zu comments Sie fügen users.commed hinzu .

Hoppla. Das kann den Besten von uns passieren.

Lassen Sie uns also zuerst eine Migration erstellen, um diesen Fehler zu beseitigen:

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

Wenn die App nicht bereitgestellt wurde, können Sie natürlich die störende Migration löschen und rake db:reset ausführen

Lassen Sie uns also die richtige Migration erstellen

rails g migration AddUserToComments user:belongs_to

Was die folgende Migration generiert:

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

add_reference erstellt einen Index und einen Fremdschlüssel auf einmal.