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)