2012-07-13 31 views
6

Làm cách nào để thêm cột vào bảng bằng ActiveRecord thông qua thiết bị đầu cuối. Tôi đang cố gắng sử dụng phương pháp add_column nhưng nó không hoạt động. Bất kỳ ý tưởng xin vui lòng?Thêm cột thông qua thiết bị đầu cuối

+0

Bạn đang sử dụng cơ sở dữ liệu nào? – cdesrosiers

+1

Tốt hơn nên viết di chuyển –

+0

Im sử dụng giá trị mặc định của đường ray, nếu tôi không nhầm, là SQLite ... Tuy nhiên, nó không quan trọng vì tôi đang trừu tượng hóa mã SQL bằng cách sử dụng ActiveRecord. Tôi tạo ra một mô hình tài khoản và quên để chèn một tên trường email và muốn thêm nó ... – Sweebo

Trả lời

8

Tốt hơn là viết di chuyển và phải nếu bạn đang làm việc với một nhóm. Khi bạn thực hiện thay đổi db, thì môi trường của mỗi nhà phát triển cũng phải được cập nhật. Nếu không, bạn sẽ có một số nhà phát triển điên tại bạn.

rails generate migration AddPartNumberToProducts part_number:string 

sẽ tạo

class AddPartNumberToProducts < ActiveRecord::Migration 
    def change 
    add_column :products, :part_number, :string 
    end 
end 

Sau đó, bạn chạy di cư

rake db:migrate 

http://guides.rubyonrails.org/migrations.html

Edit:

Đối với câu trả lời một đường ray giao diện điều khiển dòng lệnh kiểm tra @ tadman hoặc sử dụng những gì Bengala đề xuất như

ActiveRecord::Migration.add_column :products, :part_number, :string 
+0

Thx để được trợ giúp. Liên quan đến mô hình sản phẩm, tôi giả sử rằng bạn phải thêm người truy cập để phục vụ cho cột mới theo cách thủ công? Rails sẽ không tự động chỉnh sửa mô hình? – Sweebo

+0

@Sweebo, chính xác –

+0

Bạn không trả lời câu hỏi – Bengala

3

Nếu bạn chỉ đang hack xung quanh, nó thường dễ dàng thao tác cơ sở dữ liệu bằng cách sử dụng một khách hàng SQLite của một số loại hơn là thông qua lớp Rails DB.

Nếu bạn đang thực hiện việc này cho một dự án, hãy tạo tệp di chuyển thích hợp và chạy tệp đó.

Nếu bạn quyết tâm thực hiện việc này, phương pháp add_column có sẵn thông qua đối tượng trình điều khiển ActiveRecord::Base.connection.

8

Bạn có thể chạy di cư trực tiếp trong đường ray console rails c với ActiveRecord::Migration

Đối với mục đích của bạn lệnh tiếp theo sẽ làm những gì bạn yêu cầu:

> ActiveRecord::Migration.add_column :table_name, :field_name, :field_type 
+0

Cảm ơn bạn vì điều này. Tất nhiên, tốt hơn hết là nên viết di chuyển gần như mọi lúc. Nhưng _sometimes_, bạn biết chính xác những gì bạn đang làm và chỉ muốn chạy thay đổi trực tiếp :) – FeifanZ

+0

Có, nhưng anh ta không hỏi cách di chuyển, anh ấy hỏi cách thêm cột thông qua thiết bị đầu cuối. Và tôi nghĩ đây là câu trả lời phù hợp. – Bengala

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