2017-12-06 4 views
0

ich angefangen habe phoenix Rahmen zu lernen und einige Probleme, die bei dem Versuch, meine Migration zu erstellen, hier ist mein Schema:Kann nicht Migration in Phoenix erzeugen

defmodule Lclp.User do 
    use Ecto.Schema 
    import Ecto.Changeset 
    alias Lclp.User 


    schema "users" do 
    field :email, :string 
    field :name, :string 
    field :password, :string, virtual: true 
    field :password_hash, :string 
    field :username, :string 

    timestamps() 
    end 

Wenn ich laufe den Generator Migration diesen Ausgang mich so etwas wie dieses:

defmodule Lclp.Repo.Migrations.UserAdd do 
    use Ecto.Migration 

    def change do 

    end 
end 

Die Änderungsfunktion ist leer, wenn es so etwas wie sein sollte:

def change do 
    create table(:users) do 
     add :name, :string 
     add :username, :string 
     add :email, :string 
     add :password, :string 
     add :password_hash, :string 

     timestamps() 
    end 
    end 

Mein Benutzerschema befindet sich im Hauptordner mit repo.ex, wie Sie hier sehen können: enter image description here

Hat jemand eine Idee, warum der Generator eine leere Migration erzeugen?

+0

Welchen Befehl verwenden Sie zum Generieren der Migration? Da Ihr Feld ': password' ebenfalls virtuell ist, sollten Sie es nicht in die Migration einbeziehen. –

+0

Ich verwende 'mix ecto.gen.migration create_user'. Ich lösche '' Passwort', danke. –

+1

Ich denke, Sie sollten stattdessen ['phx.gen.schema'] (https://hexdocs.pm/phoenix/Mix.Tasks.Phx.Gen.Schema.html) betrachten. 'ecto.gen.migration' versucht nicht, basierend auf Ihrem Code eine Migration zu erstellen. Es erstellt nur die Migrationsdatei. –

Antwort

3

Sie sollten stattdessen phx.gen.schema betrachten. ecto.gen.migration überprüft Ihren Code nicht, um eine tatsächliche Migration für Sie zu erstellen. Es erzeugt nur die Gerüstdatei.

Verwandte Themen