2013-04-08 1 views
7

내 응용 프로그램에서 두 개의 기존 테이블/모델에 has_many 관계를 추가하고 싶습니다. & 나는 그 방법을 잘 모릅니다. 난 그냥 rails generate model Photo image:string hikingtrail:references와 레일이 명령은 나를 위해 모든 것을 처리 생성 새로운 모델로 전에 이런 짓을하면기존 모델에 새로운 has_many 관계 추가하기

그것은

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 

이제 아래의 마이그레이션을 만들어 나는 users & photos 사이의 관계를 설정 좋아할 각 userhas_many :photos.

add_index :photos, :user_id을 포함하지 않는 마이그레이션을 생성 할 때 수동으로 수행해야하는 작업입니까, 아니면 내 데이터베이스에서이 관계를 설정하기에 충분한 아래 단계입니까? 생성

rails g migration AddUserIdToPhotos user_id:integer

...

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

&

다음 실행 ...

레이크 dB : 당신의 관계를 설정하기에 충분

+1

안녕 rossmc - 어느 쪽이든 당신은 라인 add_index 등을 추가 할 수 있습니다 : photos, : user_id 위의 마이그레이션을 직접 수행하거나 zippie에서 제안한 작업을 수행 할 수 있습니다. 그러나이 경우에도 수동으로 해당 줄을 써야합니다. 감사합니다. Vikram – vikram

답변

6

을 마이그레이션 할 수 있습니다. 인덱스를 추가하여 레코드 검색 속도를 향상시킬 수 있습니다. 실제로 일부는 모든 외래 키에 인덱스를 두는 것이 좋습니다. 하지만 지금은 걱정하지 마세요. 색인을 사용하기 위해 많은 기록을 남기지 않을 것입니다. 이미 모든 것을 마이그레이션과 인덱스 메이크업을 추가 할 경우

는 수행

rails g migration AddIndexToUserIdToPhotos 

내부 인덱스 열을 추가 :

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

감사합니다 zippie, 저의'db/schema.rb' 파일을 올바르게 업데이트 한 것 같습니다. – Holly