Beim Erstellen eines Webdienstes, an den ich zum ersten Mal mit Rails gedacht habe, wurde ich plötzlich wütend, als ich einen neuen Benutzer erstellte
unknown attribute 'password' for User.
def create
@user = User.new(
name: params[:name],
email: params[:email],
password: params[:password]
Mir wurde gesagt, dass es keine Kennwortspalte gibt, daher werde ich die Spalte in der Benutzertabelle überprüfen
$ rails console
$ User.new
Loading development environment (Rails 6.0.3.1)
irb(main):001:0> User.new
(7.5ms) SELECT sqlite_version(*)
=> #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil>
Natürlich gibt es keine Passwortspalte. Die Kennwortspalte sollte in der Benutzertabelle durch Erstellen einer Migrationsdatei erstellt worden sein, aber ... Werfen wir einen Blick auf die Migrationsdatei
class AddPasswordToUsers < ActiveRecord::Migration[6.0]
def change
add_column: :users, :password, :string
end
end
Nach add_column gab es einen zusätzlichen Doppelpunkt
Der vorherige Codefehler und die Schienen db: migrate wurden korrigiert und es hat funktioniert Es war ein rudimentärer Fehler, deshalb möchte ich vorsichtig sein