2011-02-04 12 views
37

Chcę dodać boolean pole wartości ("is_public") do tabeli "my_model". Obecnie mogę użyć tego:Jak zdefiniować pole logiczne dla migracji rails

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 

Następnie można przypisać „true” lub „false” do mymodel.is_public w sterownikach.

Czy mogę zastąpić: ciąg znaków z: boolean, aby uzyskać ten sam efekt? Czy zapisałoby to trochę przestrzeni bazy danych w porównaniu do: string?

Odpowiedz

68

Tak, można użyć do tego celu :boolean, a także tak, aby również zaoszczędzić obszar bazy danych.

+0

Dzięki, koleś ~ Ale testowałem w konsoli. Narzeka "NoMethodError: undefined method" is_public = 'dla # \t z /Library/Ruby/Gems/1.8/gems/activerecord-3.0.3/lib/active_record/base.rb:1008:in ' method_missing ' \t od (irb): 16 " – lkahtz

+0

@fmttm: Jak to przetestowałeś? – sevenseacat

+0

rake db: migrate – fl00r

18

Zmień atrybut type na :boolean i ponownie uruchom rake db:migrate. Powinieneś być w stanie zadzwonić, na przykład:

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

Dzięki. Uczę się od ciebie, że Dream.is_public? byłby automatycznie generowany przez szyny. coool ~~~ – lkahtz

+0

lol to jest zabawne –

Powiązane problemy