Rails Migration Difference between Text and String
While working with Rails Migration Difference between Text and String is important to be known to every developer. Columns and their data types are finalized while deciding Table structure.
This tutorial will help understand difference between String and Text column type and illustrate how to write Rails Migration implementing the same. You might want to read about database.yml files for specifying database configuration for Rails Application.
1. Concepts
When String or Text data type is required?
- Whenever you require your column to store information which is lengthy in size (Many characters), you need to consider String or Text data type for the column.
- Both of them let you store Many(How Many - will see later) characters
Difference between String and Text
Considering MySQL database
Feature | String | Text |
---|---|---|
Length | 1 to 255 | 1 to 4294967296 |
Default | 65536 | 255 |
2. Inference
When to use String for column type?
Column type should be used as String when you want to store characters with length fairly minimum unto 255.
When to use Text for column type?
Column type should be used as String when you want to store much more characters (No Limit - not literally) e.g. if you want to store description, content of some post etc. then you may want to consider Text as a column type for the same.
3. Rails Migration
Let us create a sample table ‘posts’ having following fields
- id
- title
- description
- content
- author_id
Then in Rails, we can write migration as follows,
Above migration when run will create posts table with given column types.
Custom Length limit to column type:
We can set limit to the character length of particular column type using limit as follows,
Then it will set character limit for the ‘description’ column to 50 and it will not allow to enter information having length more than 50 characters for that column. You can find more regarding Rails Migrations here.
Subscribe to Ruby in Rails
Get the latest posts delivered right to your inbox