레일스 4.x
당신은 때 이미 users
및 uploads
테이블과하고자하는 새로운 관계를 추가 그들 사이.
다음 명령을 사용하여 마이그레이션을 생성하기 만하면됩니다.
rails g migration AddUserToUploads user:references
마이그레이션 파일이 다음과 같이 생성됩니다.
class AddUserToUploads < ActiveRecord::Migration
def change
add_reference :uploads, :user, index: true
end
end
그런 다음을 사용하여 마이그레이션을 실행하십시오 rake db:migrate
. 이 마이그레이션라는 새 열 추가 처리됩니다 user_id
에 uploads
테이블 (참조 id
에서 열 users
테이블), PLUS 또한 새로운 컬럼에 인덱스를 추가합니다.
업데이트 [For Rails 4.2]
레일은 참조 무결성을 유지하기 위해 신뢰할 수 없습니다. 관계형 데이터베이스 가 우리를 구출합니다. 즉, 데이터베이스 수준 자체 에 외래 키 제약 조건을 추가하고 데이터베이스 가이 참조 참조 무결성을 위반하는 작업을 거부 할 수 있습니다. @infoget이 언급했듯이 Rails 4.2 는 외래 키 (참조 무결성) 를 기본적으로 지원합니다 . 필수는 아니지만 위에서 만든 참조에 외래 키를 추가하는 것이 좋습니다.
기존 참조 에 외래 키를 추가하려면 외래 키를 추가하기 위해 새 마이그레이션을 만듭니다.
class AddForeignKeyToUploads < ActiveRecord::Migration
def change
add_foreign_key :uploads, :users
end
end
외래 키 를 사용하여 완전히 새로운 참조 를 만들려면 (Rails 4.2) 다음 명령을 사용하여 마이그레이션을 생성하십시오.
rails g migration AddUserToUploads user:references
마이그레이션 파일이 다음과 같이 생성됩니다.
class AddUserToUploads < ActiveRecord::Migration
def change
add_reference :uploads, :user, index: true
add_foreign_key :uploads, :users
end
end
테이블 의 user_id
열에 새로운 외래 키가 추가됩니다 uploads
. 키 id
는 users
테이블 의 열을 참조 합니다.
참고 : 이 여전히 필요하므로 참조를 추가하는 추가됩니다 먼저 외래 키 참조를 만들 ( 같은 마이그레이션 또는 별도의 마이그레이션 파일에서 외부 키를 만들 수 있습니다 ). 액티브 레코드는 단일 열 외래 키를 지원하며, 현재는 mysql
, mysql2
그리고 PostgreSQL
어댑터가 지원됩니다. sqlite3
등의 다른 어댑터로이 작업을 시도하지 마십시오 . 참조를 위해 Rails Guides : Foreign Keys 를 참조하십시오.