Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
July 27, 2021 12:23 am GMT

Rails ActiveRecord Data Types

I usually curios to know about Data Types for ActiveRecord, but the Active Record Migration documentation itself does not have that information.

So, I do some Google search and here is the TL;DR.

The ActiveRecord data types available in Rails 6;

  • :primary_key
  • :string: short text
  • :text: long text
  • :integer: whole numbers [-4, 0, 9, 772]
  • :float: double-precision floating-point numbers [3244.90]
  • :decimal: high-precision floating-point numbers [3244.2342343789212]
  • :datetime
  • :time
  • :date
  • :binary: 1 / 0
  • :boolean: true or false

These data types are used in instances such as migrations.

def change  create_table :categories do |t|    t.string :title    t.boolean :is_subcategory    t.string :permalink    t.timestamps  endend

Specific DBMS Data Type

MySQL Data Types

NATIVE_DATABASE_TYPES = {        primary_key: "bigint auto_increment PRIMARY KEY",        string:      { name: "varchar", limit: 255 },        text:        { name: "text" },        integer:     { name: "int", limit: 4 },        float:       { name: "float", limit: 24 },        decimal:     { name: "decimal" },        datetime:    { name: "datetime" },        timestamp:   { name: "timestamp" },        time:        { name: "time" },        date:        { name: "date" },        binary:      { name: "blob" },        blob:        { name: "blob" },        boolean:     { name: "tinyint", limit: 1 },        json:        { name: "json" },      }

PostgreSQL Data Types

NATIVE_DATABASE_TYPES = {        primary_key: "bigserial primary key",        string:      { name: "character varying" },        text:        { name: "text" },        integer:     { name: "integer", limit: 4 },        float:       { name: "float" },        decimal:     { name: "decimal" },        datetime:    {}, # set dynamically based on datetime_type        timestamp:   { name: "timestamp" },        timestamptz: { name: "timestamptz" },        time:        { name: "time" },        date:        { name: "date" },        daterange:   { name: "daterange" },        numrange:    { name: "numrange" },        tsrange:     { name: "tsrange" },        tstzrange:   { name: "tstzrange" },        int4range:   { name: "int4range" },        int8range:   { name: "int8range" },        binary:      { name: "bytea" },        boolean:     { name: "boolean" },        xml:         { name: "xml" },        tsvector:    { name: "tsvector" },        hstore:      { name: "hstore" },        inet:        { name: "inet" },        cidr:        { name: "cidr" },        macaddr:     { name: "macaddr" },        uuid:        { name: "uuid" },        json:        { name: "json" },        jsonb:       { name: "jsonb" },        ltree:       { name: "ltree" },        citext:      { name: "citext" },        point:       { name: "point" },        line:        { name: "line" },        lseg:        { name: "lseg" },        box:         { name: "box" },        path:        { name: "path" },        polygon:     { name: "polygon" },        circle:      { name: "circle" },        bit:         { name: "bit" },        bit_varying: { name: "bit varying" },        money:       { name: "money" },        interval:    { name: "interval" },        oid:         { name: "oid" },      }

Rails data types mapping to different DB data types:

It is important to know not only the types but the mapping of these types to the database types, too:

Data type mapping 1
Data type mapping 2

The easy way

You can access this list everytime you want (even if you don't have Internet access) through:

rails generate model -h

The end

resources;

1 2 3 4 5 6 7


Original Link: https://dev.to/asyraf/rails-activerecord-data-types-32ip

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To