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.
B0f6d8efcf671ea3163449e231264cc4?d=identicon&s=25 Mauro (Guest)
on 2008-10-22 11: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'?
7de465f222e6a9c7fe658e370d0bfe05?d=identicon&s=25 Paolo Montrasio (pmontrasio)
on 2008-10-24 16: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.