Hi guys, so I’m following tutorials in the book “Programming Phoenix ≥ 1.4” (yes, I got the latest version cause the older one was just too hard to follow).
Under chapter 4 “Ecto and Changesets” everything works fine until I issue the command mix ecto.gen.migration create_users. The migration code i.e. change function is just empty.
I checked the folders and user.ex is under the folder lib/rumbl/accounts and it looks like this
defmodule Rumbl.Accounts.User do
use Ecto.Schema
import Ecto.Changeset
schema "users" do
field :name, :string
field :username, :string
timestamps()
end
end
It’s probably a newbie question but after a couple of hours trying and re-trying, I couldn’t figure out the issue.
Yes, the migration is empty! Ecto doesn’t try to magically figure out the migration from the schema. That’s why the book explicitly asks why you fill this in:
defmodule Rumbl.Repo.Migrations.CreateUsers do
use Ecto.Migration
def change do
create table(:users) do
add :name, :string
add :username, :string, null: false
timestamps()
end
create unique_index(:users, [:username]) end
end
end
You can probably find the exact snippet in the book.
Hi @josevalim, I missed that sentence. I was actually tempted to copy/paste from the book but I honestly thought it was auto-generated. My mis-perception came from my background in Python/Django where similar commands do generate the migration code…
I’m just an Elixir newbie learning new stuff. Thanks for helping!
Hi @2trc, are you still experimenting with Elixir? I’m also used (not too much though) to Django (I come from several years on SQLAlchemy, recently moved to Django mostly because of the ease of migrations there), and I’m a bit puzzled with ecto-migrations. I’m trying to document how they work, and help people with my same background grasp the concepts. maybe you want to have a look at my work in progress pull request, and comment.
Unfortunately not at the moment. I’m spending some time looking into :erlang (Programming Erlang and Designing for Scalability with Erlang/OTP). Going back to the basics