[RUBY-ON-RAILS] 3 마이그레이션 레일 : 참조 열을 추가?
RUBY-ON-RAILS3 마이그레이션 레일 : 참조 열을 추가?
내가 가진 새로운 레일 3 마이그레이션을 작성하는 경우 (예를 들어)
rails g migration tester title:tester user:references
모든 내가의 라인을 따라 뭔가에 열을 추가하지만 경우 ... 잘 작동합니다 :
rails g migration add_user_to_tester user:references
레퍼런스 필드는 인식되지 않는다. 즉, 질문은 : 명령 줄에서 마이그레이션을 레일에 어떻게 참조 열을 추가하는 방법은 무엇입니까?
해결법
-
==============================
1.당신이 레일을 사용하는 경우 지금과 같은 참조와 마이그레이션을 생성 할 수 있습니다 4.x의 :
당신이 레일을 사용하는 경우 지금과 같은 참조와 마이그레이션을 생성 할 수 있습니다 4.x의 :
rails generate migration AddUserRefToProducts user:references
당신이 볼 수있는 것처럼 가이드 레일
-
==============================
2.편집 : 이것은 오래된 대답과 레일 4.x의 +에 적용되어서는 안된다
편집 : 이것은 오래된 대답과 레일 4.x의 +에 적용되어서는 안된다
당신이 당신의 참조 클래스에 정수 ID를 사용할 수 있습니다 때 참조를 추가 할 필요가 없습니다.
내가 대신 일반 정수의 참조를 사용의 장점은 모델 belongs_to와 미리 정의되고 모델이 이미 생성되어 있기 때문에 당신이 뭔가 기존 마이그레이션 할 때 영향을받지 않을 것입니다라고 말하고 싶지만, 목적은 종류의 손실이다.
나는이 대신 같이 할 것이다 그래서 :
rails g migration add_user_id_to_tester user_id:integer
테스터 모델에서 사용자 : 그리고 수동 belongs_to 추가
-
==============================
3.당신이 가장 가능성도 해당 컬럼에 인덱스를해야한다는주십시오 참고.
당신이 가장 가능성도 해당 컬럼에 인덱스를해야한다는주십시오 참고.
class AddUserReferenceToTester < ActiveRecord::Migration def change add_column :testers, :user_id, :integer add_index :testers, :user_id end end
-
==============================
4.앞의 두 단계는 위에서 언급 한, 당신은 여전히 외래 키 제약 조건을 놓치고있어. 이 작업을해야합니다 :
앞의 두 단계는 위에서 언급 한, 당신은 여전히 외래 키 제약 조건을 놓치고있어. 이 작업을해야합니다 :
class AddUserReferenceToTester < ActiveRecord::Migration def change add_column :testers, :user_id, :integer, references: :users end end
-
==============================
5.당신은 변화 마이그레이션에 대한 참조를 사용할 수 있습니다. 이것은 유효한 레일을 3.2.13 코드입니다 :
당신은 변화 마이그레이션에 대한 참조를 사용할 수 있습니다. 이것은 유효한 레일을 3.2.13 코드입니다 :
class AddUserToTester < ActiveRecord::Migration def change change_table :testers do |t| t.references :user, index: true end end def down change_table :testers do |t| t.remove :user_id end end end
c.f : http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_table
-
==============================
6.레일을 g 마이그레이션 AddUserRefToSponsors 사용자를 실행 : 참조는 다음 마이그레이션을 생성합니다 :
레일을 g 마이그레이션 AddUserRefToSponsors 사용자를 실행 : 참조는 다음 마이그레이션을 생성합니다 :
def change add_reference :sponsors, :user, index: true end
-
==============================
7.열을 추가 할 때 해당 열 정수를 만들 필요가 난간 규칙에 가능하면 스틱. 당신의 사건에 대한 그래서 나는 당신이 이미 테스터 및 사용자 모델, 테스터 및 사용자 테이블이 가정입니다.
열을 추가 할 때 해당 열 정수를 만들 필요가 난간 규칙에 가능하면 스틱. 당신의 사건에 대한 그래서 나는 당신이 이미 테스터 및 사용자 모델, 테스터 및 사용자 테이블이 가정입니다.
당신이 이름 USER_ID (규칙)과 정수 열을 만드는 데 필요한 외부 키를 추가하려면 :
add_column :tester, :user_id, :integer
그런 다음 테스터 모델에 belongs_to를 추가 :
class Tester < ActiveRecord::Base belongs_to :user end
그리고 당신은 또한 외부 키에 대한 인덱스를 추가 할 수 있습니다 (이 참조가 이미 당신을 위해하는 일입니다) :
add_index :tester, :user_id
-
==============================
8.즉, 트릭을 할 것입니다 :
즉, 트릭을 할 것입니다 :
rails g migration add_user_to_tester user_id:integer:index
-
==============================
9.다음과 같은 방법으로 명령 줄을 통해 모델에 대한 참조를 추가 할 수 있습니다 :
다음과 같은 방법으로 명령 줄을 통해 모델에 대한 참조를 추가 할 수 있습니다 :
rails g migration add_column_to_tester user_id:integer
이 같은 마이그레이션 파일을 생성합니다 :
class AddColumnToTesters < ActiveRecord::Migration def change add_column :testers, :user_id, :integer end end
이 작품은 내가 그것을 사용할 때마다 미세 ..
-
==============================
10.레일 4
레일 4
발전기 (belongs_to 로서도 사용 가능) 참조로 열 입력을 받아 들인다.
이 마이그레이션은 USER_ID 컬럼 적절한 인덱스를 생성합니다 :
$ rails g migration AddUserRefToProducts user:references
생성 :
class AddUserRefToProducts < ActiveRecord::Migration def change add_reference :products, :user, index: true end end
http://guides.rubyonrails.org/active_record_migrations.html#creating-a-standalone-migration
레일 3
도우미는 (belongs_to로도 가능) 참조라고합니다.
이 마이그레이션은 적절한 유형의 CATEGORY_ID 열을 생성합니다. 당신이 모델 이름이 아닌 열 이름을 전달합니다. 액티브 레코드는 당신을 위해 _id를 추가합니다.
change_table :products do |t| t.references :category end
당신이 다형성 belongs_to 연관이있는 경우 다음 참조 필요한 열을 모두 추가합니다 :
change_table :products do |t| t.references :attachment, :polymorphic => {:default => 'Photo'} end
사진의 기본 값을 가진 attachment_id 열 및 문자열 attachment_type 열을 추가합니다.
http://guides.rubyonrails.org/v3.2.21/migrations.html#creating-a-standalone-migration
from https://stackoverflow.com/questions/4954969/rails-3-migrations-adding-reference-column by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 협회를 통해 belongs_to (0) | 2020.02.21 |
---|---|
[RUBY-ON-RAILS] turbolinks와 AngularJS와 사용 (0) | 2020.02.21 |
[RUBY-ON-RAILS] 어떻게 JSON에 루비 해시 객체를 변환하는? (0) | 2020.02.21 |
[RUBY-ON-RAILS] 어떻게 독립적 인 로그 파일에 레일에 뭔가를 기록하려면? (0) | 2020.02.21 |
[RUBY-ON-RAILS] 방법의 RoR에서 업적 시스템을 구현하는 (0) | 2020.02.21 |