2013-04-08 28 views
7

Tôi muốn thêm mối quan hệ has_many vào hai bảng/mô hình hiện có trong ứng dụng & Tôi không chắc chắn cách di chuyển?thêm mối quan hệ has_many mới vào mô hình hiện tại

Khi tôi đã làm điều này trước khi với một mô hình mới đường ray tạo ra lệnh xử lý tất cả mọi thứ đối với tôi, chỉ với rails generate model Photo image:string hikingtrail:references nó tạo ra sự di cư dưới

class CreatePhotos < ActiveRecord::Migration 
    def change 
    create_table :photos do |t| 
     t.string :image 
     t.references :hikingtrail 

     t.timestamps 
    end 
    add_index :photos, :hikingtrail_id 
    end 
end 

bây giờ tôi muốn thiết lập một mối quan hệ giữa users & photos với mỗi userhas_many :photos.

Khi tôi tạo di chuyển để đạt được điều này, nó không bao gồm add_index :photos, :user_id, đây có phải là điều tôi nên làm theo cách thủ công hay các bước dưới đây đủ để thiết lập mối quan hệ này trong cơ sở dữ liệu của tôi?

rails g migration AddUserIdToPhotos user_id:integer

mà tạo ra ...

class AddUserIdToPhotos < ActiveRecord::Migration 
    def change 
    add_column :photos, :user_id, :integer 
    end 
end 

& sau đó chạy ...

rake db: di chuyển

+1

Hi rossmc - Hoặc bạn có thể thêm add_index dòng : ảnh,: user_id theo cách thủ công trong quá trình di chuyển ở trên hoặc bạn có thể làm những gì zippie đã đề xuất. Nhưng trong trường hợp đó bạn cũng sẽ phải viết dòng đó theo cách thủ công. Cảm ơn Vikram – vikram

Trả lời

6

Nó là đủ để thiết lập mối quan hệ của bạn. Bạn có thể thêm chỉ mục để cải thiện tốc độ tìm kiếm bản ghi của mình. Trong thực tế, một số khuyên bạn nên đặt chỉ mục cho tất cả các khóa ngoại. Nhưng đừng lo lắng về điều này ngay bây giờ, tôi đoán bạn sẽ không có nhiều bản ghi để sử dụng một chỉ mục.

Nếu bạn đã di cư tất cả mọi thứ và muốn thêm một make index làm:

rails g migration AddIndexToUserIdToPhotos 

và bên trong thêm cột chỉ số:

class AddUserIdToPhotos < ActiveRecord::Migration 
    def change 
    add_index :photos, :user_id 
    end 
end 
+1

cảm ơn zippie, có vẻ như đã cập nhật tệp 'db/schema.rb' của tôi một cách chính xác và tôi cũng hiểu nó tốt hơn :) – Holly