How to define boolean field for a rails migration
I want to add a boolean value field ("is_public") to the table "my_model". Currently I can use this:
class AddPublicToDream < ActiveRecord::Migration
def self.up
add_column :my_model, :is_public, :string
end
def self.down
remove_column :my_model, :is_public, :string
end
end
Then I can assign "true" or "false" to mymodel.is_public in controllers.
Can I substitute :string with :boolean to achieve the same effect? Would it save some database space comparing to :string?
Solution 1:
Yes, you can use :boolean
for this, and yes it will also save database space.
Solution 2:
Change the type attribute to :boolean
and run rake db:migrate
again. You should be able to call, for example:
Dream.is_public? # returning true or false depending whether is set.