2013-05-08 37 views
17

Tôi biết rằng tôi có thể chạm vào một sự chuyển đổi và thêmThêm chỉ mục: duy nhất cho một cột trong Ruby on Rails qua tạo di cư

add_index :table_name, :column_name, :unique => true 

Nhưng làm thế nào là lệnh ray di cư ngay để tạo ra điều này?

rails g migration add_index_to_column_name :column_name, :unique => true 

Có đúng không?

Trong ví dụ đặc biệt của tôi, tôi có một bảng khách hàng

t.integer :customerID 
    t.string :surname 
    t.string :first_name 
    t.string :phone 

một tôi muốn thiết lập ID khách hàng đến độc đáo. Cố gắng

rails g migration AddIndexToCustomers :customerID, :unique => true 

Nhưng nếu tôi tìm đến tập tin chuyển đổi của tôi sau này, nó không nhìn ngay thấy điều này:

def change 
    add_column :customers, :, :customerID, 
    add_column :customers, :, :unique 
    add_column :customers, :=, :string 
    end 

Bất kỳ ý tưởng hoặc đề nghị?

+0

Hãy chắc chắn rằng không sử dụng '> true' trong shell của bạn, hoặc bạn sẽ tạo ra một file' true' qua chuyển hướng. –

Trả lời

31

Bắt đầu từ Rails 3.2 bạn có thể sử dụng:

rails g migration add_index_to_table_name column_name:uniq 

ví dụ từ http://guides.rubyonrails.org/3_2_release_notes.html

rails g scaffold Post title:string:index author:uniq price:decimal{7,2} 

UPD Tôi xin lỗi. Loại mặc định nếu bạn không vượt qua nó sẽ là chuỗi. Bạn có thể vượt qua loại của chính mình.

column_name:type:uniq 

Như vậy ví dụ của bạn nên trông giống như:

rails g migration add_index_to_customers customerID:integer:uniq 
+2

nope .. thats không làm việc nhận được 'def thay đổi add_column: customerids,: ID khách hàng,: string add_index: customerids,: ID khách hàng,: độc đáo => true cuối ' –

+0

cố gắng 'đường ray add_index_to_customers g di cư ID khách hàng: uniq' nhưng vẫn tạo ID khách hàng làm chuỗi. –

+0

Tôi đã thêm nhiều ví dụ hơn. Bạn có thể chuyển loại thành di chuyển. – ck3g

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