Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

ActiveModel::MissingAttributeError:não é possível escrever o atributo desconhecido `user_id`


Você tem a migração errada - em vez de adicionar um user_id para comments você adiciona users.commed .

Ops. Pode acontecer com o melhor de nós.

Então, primeiro vamos criar uma migração para limpar esse erro:
class RemoveCommedFromUsers < ActiveRecord::Migration
  def change
    remove_column :users, :commed # will also remove the index
  end
end

É claro que se o aplicativo não tiver sido implantado, você pode simplesmente excluir a migração incorreta e executar rake db:reset

Então vamos criar a migração correta
rails g migration AddUserToComments user:belongs_to

O que gera a seguinte migração:
class AddUserToComments < ActiveRecord::Migration
  def change
    add_reference :comments, :user, index: true
  end
end

add_reference cria um índice e uma chave estrangeira em uma varredura.