Migration et fonctions spécifiques mysql


#1

Le message a été supprimé par google, je retente donc :slight_smile:

Bonjour,

est-il possible de créer un champ de type SET (qui je crois est
spécifique à mysql) dans un fichier migration ?
L’API ne semble pas le proposer
“column_name specified to be one of the following types: :string, :text,
:integer, :float, :decimal, :datetime, :timestamp, :time, :date,
:binary, :boolean”
Le but est de créer des valeurs par défaut dans un menu défilant pour
éviter de saisir à chaque fois la même chose.

Comment vous faites dans ce cas : nouvelle table avec les valeurs
prédéfinies ? Simple hash dans le model ?

merci!


#2

On 7/18/07, Zambra removed_email_address@domain.invalid wrote:

:binary, :boolean"
Le but est de créer des valeurs par défaut dans un menu défilant pour
éviter de saisir à chaque fois la même chose.

Comment vous faites dans ce cas : nouvelle table avec les valeurs
prédéfinies ? Simple hash dans le model ?

Tu peux tout simplement faire le script en SQL pur.

Un exemple de ça est le passage en InnoDB dans un fichier de migration
015[1] de Typo :

class ConvertMysqlToInnodb < ActiveRecord::Migration
def self.up
config = ActiveRecord::Base.configurations
begin
STDERR.puts “Migrating all existing tables to InnoDB”
schema = []
select_all(‘SHOW TABLES’).inject([]) do |schema, table|
schema << “ALTER TABLE #{table.to_a.first.last} ENGINE=InnoDB”
end
schema.each { |line| execute line }
end if config[RAILS_ENV][‘adapter’] == ‘mysql’ unless
$schema_generator
end

def self.down
# don’t do anything
# this is a one-way migration, but it’s not “irreversable”
# because it doesn’t change any code logic
end
end

[1] :
http://trac.typosphere.org/browser/trunk/db/migrate/015_convert_mysql_to_innodb.rb


Cyril M.