If you're using Lucky, and you have a schema that's not default, you may need to create a custom primary key.
I had to do this for an app where my primary keys were defined in postgres like character varying(18). Just doing String wasn't going to be good enough since Avram defines those as just text. Here's how I did it.
# src/models/concerns/custom_id.cr
alias CustomID = String
module Avram::Migrator::Columns::PrimaryKeys
class CustomIDPrimaryKey < Avram::Migrator::Columns::PrimaryKeys::Base
def initialize(@name)
end
def column_type : String
"character varying(18)"
end
end
end
module Avram::Migrator::Columns
class CustomIDColumn < Avram::Migrator::Columns::Base
@default : String? = nil
def initialize(@name, @nilable, @default)
end
def column_type
"character varying(18)"
end
end
end
Then in my model, I can now do this:
# src/models/user.cr
class User < BaseModel
skip_default_columns
table do
primary_key id : CustomID
column created_on : Time
column updated_on : Time
end
end
Top comments (0)