Ich habe meiner App das Device gem für logIn hinzugefügt. Meine Seite ist ein Geschäft und ein Benutzer hat viele Aufträge und ich füge hinzu in Modell Benutzer:Ruby on Rails - Rake db: seed abgebrochen
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :comandas #I add this line, comandas = orders in Spanish
end
Und in der Migrate-Datei von Comandas (Aufträge) Ich habe diese:
class CreateComandas < ActiveRecord::Migration[5.0]
def change
create_table :comandas do |t|
t.belongs_to :user, index: true #references to user
t.float :total
t.timestamps
end
end
end
Und jetzt ich m testet die Datenbank mit der Seeds-Datei, aber wenn ich einen Comanda zu einem Benutzer hinzufüge, dann erhebe ich den Fehler, dass Rake abgebrochen wird.
Mein Samen Datei:
c1 = Comanda.create(total: 100)
u1 = User.find_by email: "[email protected]"
u1.comandas << [c1]
I'created die vor Benutzer.
Fehler: Screen shot of shell
UPDATE:
fand ich endlich das Problem. Das Problem war, dass ich alle Modelle erstellt habe, bevor diese Modifikation hinzugefügt wurde. Und als ich diese Beziehung hinzufügte, änderte Rails mir die Datenbank nicht. Ich überprüfte dies in die sqlite-Befehlszeile und listet die Spalten der Comandas-Tabelle auf. Und ich habe gesehen, dass der Hinweis auf Benutzer nicht hier war. Und entscheiden Sie alle Datenbank die Ausführung des Befehls zu löschen:
rake db:drop db:create db:migrate
und nachdem ich einen Benutzer hinzugefügt und ich laufe:
rake db:seed
und funktioniert! Danke an alle für die Hilfe!
Wollen Sie die Benutzer nicht zuerst erstellen? – ediblecode
Ich habe den Benutzer bereits erstellt, becuase, wenn ich den Rake db: seed ohne letzte Zeile, wo ich die Comanda zu Benutzer hinzufügen, funktioniert es. – Xavi
Das Löschen der letzten Zeile beweist nicht, dass "u1" nicht null ist – ediblecode