V1.3: Alter Table
Methods
The following methods are available for table alterations:
#add_column(see#columnfor usage)#drop_column#rename_column(the first argument is the old name, while the second is the new name)#add_index(see#indexfor usage)#drop_index#add_primary_key(see#primary_keyfor usage)#add_foreign_key(see#foreign_keyfor usage)#add_constraint(see#constraintfor usage)#drop_constraint(accepts the name of the constraint as argument)#add_unique_constraint#set_column_default(accepts the name of the column and the default value as comma separated args)#set_column_type(accepts the name of the column and the new type as comma separated args)#set_column_allow_null(accepts the name of the column)#set_column_not_null(accepts the name of the column)
Hanami::Model.migration do
change do
alter_table :users do
# `users` table is implicit within this block, so it can be omitted.
add_column :email, String, null: false, unique: true
set_column_default :visits_counts, 0
end
end
end
- To add a unique constraint use
add_unique_constraint(:column_name)
Shortcuts
Some methods can be used without alter_table block. Those methods accept the name of the target table as first argument, then the other args.
add_index :users, :email
#instead of
alter_table(:users) do
add_index :email
end
List of available methods which are shortcuts to the same methods in alter_table:
#add_column#drop_column#rename_column#add_index#drop_index#set_column_default#set_column_type
Rename Table
Tables can be renamed via #rename_table. It accepts the old name and the new name as arguments.
rename_table :users, :people
Drop Table
Tables can be dropped via #drop_table. It accepts the name as argument.
drop_table :users
Safe operation can be performed via #drop_table?. It drops the table only if it exists.