2011-02-04 44 views
37

Tôi muốn thêm trường giá trị boolean ("is_public") vào bảng "my_model". Hiện tại tôi có thể sử dụng điều này:Cách xác định trường boolean cho di chuyển đường ray

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 

Sau đó, tôi có thể gán "true" hoặc "false" cho mymodel.is_public trong bộ điều khiển.

Tôi có thể thay thế: chuỗi có: boolean để đạt được hiệu quả tương tự không? Nó sẽ tiết kiệm một số không gian cơ sở dữ liệu so với: string?

Trả lời

68

Có, bạn có thể sử dụng :boolean cho điều này và đồng ý cũng sẽ tiết kiệm không gian cơ sở dữ liệu.

+0

Cảm ơn dude ~ Nhưng tôi đã thử nghiệm trong bảng điều khiển. Nó than phiền "NoMethodError: phương thức undefined' is_public = 'cho # \t từ /Library/Ruby/Gems/1.8/gems/activerecord-3.0.3/lib/active_record/base.rb:1008:in ' method_missing ' \t từ (irb): 16 " – lkahtz

+0

@fmttm: Bạn thử nghiệm nó như thế nào? – sevenseacat

+0

rake db: di chuyển – fl00r

18

Thay đổi thuộc tính type thành :boolean và chạy lại rake db:migrate. Bạn có thể gọi điện, ví dụ:

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

Cảm ơn. Tôi học hỏi từ bạn rằng Dream.is_public? sẽ được tạo tự động bằng đường ray. coool ~~~ – lkahtz

+0

lol điều này thật thú vị –

Các vấn đề liên quan