如何为Rails迁移定义布尔字段

我想向表“ my_model”中添加一个布尔值字段(“ is_public”)。 目前,我可以使用:

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

然后,我可以在控制器中为mymodel.is_public分配“ true”或“ false”。

我可以用:boolean替换:string来达到相同的效果吗? 与:string相比,它会节省一些数据库空间吗?

lkahtz asked 2020-08-11T10:13:36Z
2个解决方案
74 votes

是的,您可以为此使用:boolean,是的,这还将节省数据库空间。

sevenseacat answered 2020-08-11T10:13:42Z
19 votes

将类型属性更改为:boolean,然后再次运行rake db:migrate。 您应该可以打电话,例如:

Dream.is_public?  # returning true or false depending whether is set.
Kleber S. answered 2020-08-11T10:14:10Z
translate from https://stackoverflow.com:/questions/4896169/how-to-define-boolean-field-for-a-rails-migration