Rails 4: List of available datatypes
Solution 1:
Here are all the Rails 4 (ActiveRecord migration) datatypes:
:binary
:boolean
:date
:datetime
:decimal
:float
:integer
:bigint
:primary_key
:references
:string
:text
:time
:timestamp
Source: http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_column
These are the same as with Rails 3.
If you use PostgreSQL, you can also take advantage of these:
:hstore
:json
:jsonb
:array
:cidr_address
:ip_address
:mac_address
They are stored as strings if you run your app with a not-PostgreSQL database.
Edit, 2016-Sep-19:
There's a lot more postgres specific datatypes in Rails 4 and even more in Rails 5.
Solution 2:
You might also find it useful to know generally what these data types are used for:
-
:string
- is for small data types such as a title. (Should you choose string or text?) -
:text
- is for longer pieces of textual data, such as a paragraph of information -
:binary
- is for storing data such as images, audio, or movies. -
:boolean
- is for storing true or false values. -
:date
- store only the date -
:datetime
- store the date and time into a column. -
:time
- is for time only -
:timestamp
- for storing date and time into a column.(What's the difference between datetime and timestamp?) -
:decimal
- is for decimals (example of how to use decimals). -
:float
- is for decimals. (What's the difference between decimal and float?) -
:integer
- is for whole numbers. -
:primary_key
- unique key that can uniquely identify each row in a table
There's also references used to create associations. But, I'm not sure this is an actual data type.
New Rails 4 datatypes available in PostgreSQL:
-
:hstore
- storing key/value pairs within a single value (learn more about this new data type) -
:array
- an arrangement of numbers or strings in a particular row (learn more about it and see examples) -
:cidr_address
- used for IPv4 or IPv6 host addresses -
:inet_address
- used for IPv4 or IPv6 host addresses, same as cidr_address but it also accepts values with nonzero bits to the right of the netmask -
:mac_address
- used for MAC host addresses
Learn more about the address datatypes here and here.
Also, here's the official guide on migrations: http://edgeguides.rubyonrails.org/migrations.html
Solution 3:
It is important to know not only the types but the mapping of these types to the database types, too:
Source added - Agile Web Development with Rails 4
Solution 4:
You can access this list everytime you want (even if you don't have Internet access) through:
rails generate model -h