Forum: Italian Ruby user group i data type delle migrations in rails.

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Mauro (Guest)
on 2008-10-22 13:19
(Received via mailing list)
Mi pare di capire che i data type delle migrations non hanno una
corrispondeza stretta con i data type dei vari dbms no?
Per esempio il tipo string non esiste ne in mysql ne in postgres, semmai
c'e' il tipo varchar.
E' cosi'?
Paolo M. (Guest)
on 2008-10-24 18:13
Mauro wrote:
> Mi pare di capire che i data type delle migrations non hanno una
> corrispondeza stretta con i data type dei vari dbms no?
> Per esempio il tipo string non esiste ne in mysql ne in postgres, semmai
> c'e' il tipo varchar.
> E' cosi'?

E' così. Il varchar (altresì detto character varying) però ha un limite
di lunghezza. Per stringhe illimitate c'è un altro tipo di dati, il
text.

Il dettaglio della corrispondenza tra tipi ruby e tipi del db è nel
metodo native_database_types della classe che fa da adapter ai diversi
database. Trovi i file degli adapter nella directory
lib/active_record/connection_adapters dentro a quella della gemma
activerecord.

Ti riporto quelli mySQL (il primo) e quelli PostgreSQL

      def native_database_types #:nodoc:
        {
          :primary_key => "int(11) DEFAULT NULL auto_increment PRIMARY
KEY",
          :string      => { :name => "varchar", :limit => 255 },
          :text        => { :name => "text" },
          :integer     => { :name => "int", :limit => 11 },
          :float       => { :name => "float" },
          :decimal     => { :name => "decimal" },
          :datetime    => { :name => "datetime" },
          :timestamp   => { :name => "datetime" },
          :time        => { :name => "time" },
          :date        => { :name => "date" },
          :binary      => { :name => "blob" },
          :boolean     => { :name => "tinyint", :limit => 1 }
        }
      end


      def native_database_types #:nodoc:
        {
          :primary_key => "serial primary key",
          :string      => { :name => "character varying", :limit => 255
},
          :text        => { :name => "text" },
          :integer     => { :name => "integer" },
          :float       => { :name => "float" },
          :decimal     => { :name => "decimal" },
          :datetime    => { :name => "timestamp" },
          :timestamp   => { :name => "timestamp" },
          :time        => { :name => "time" },
          :date        => { :name => "date" },
          :binary      => { :name => "bytea" },
          :boolean     => { :name => "boolean" }
        }
      end


Paolo
This topic is locked and can not be replied to.