2011-02-04 16 views
37

ブール値フィールド( "is_public")をテーブル "my_model"に追加します。現在、私はこれを使うことができます:レールのマイグレーションにブール値フィールドを定義する方法

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"を割り当てることができます。

私は次のように置き換えることができます:string:booleanと同じ効果を得るには?それはいくつかのデータベーススペースを節約しますか?string?

答えて

68

はい、これには:booleanを使用できます。はい、データベーススペースも節約できます。

+0

私はコンソールでテストしましたが、電話することができます。それは "NoMethodError:未定義メソッド' is_public = 'for# \t from /Library/Ruby/Gems/1.8/gems/activerecord-3.0.3/lib/active_record/base.rb:1008:in ' method_missing ' \t from(irb):16 " – lkahtz

+0

@fmttm:どのようにテストしましたか? – sevenseacat

+0

rake db:migrate – fl00r

18

タイプ属性を:booleanに変更し、再度rake db:migrateを実行してください。

Dream.is_public? # returning true or false depending whether is set. 
+9

ありがとう。私はあなたからその夢を学ぶ.is_public?レールによって自動的に生成されます。 coool ~~~ – lkahtz

+0

笑これは面白いです –

関連する問題