Il problema qui è che l'adattatore del database Rails Mysql2 si blocca quando sono presenti più comandi SQL all'interno dello stesso blocco di esecuzione. Il seguente funzionerà bene:
execute <<-SQL
ALTER TABLE properties
ADD name VARCHAR(255) NOT NULL;
SQL
execute <<-SQL
ALTER TABLE properties
ADD CONSTRAINT fk_properties_name
FOREIGN KEY (name)
REFERENCES valid_property_names (property_name);
SQL
Questo comportamento potrebbe confonderti se provieni dall'utilizzo di PostgreSQL con Rails poiché l'adattatore Postgres non ha la stessa limitazione.