[RUBY-ON-RAILS] has_and_belongs_to_many에 대한 마이그레이션을 레일 테이블 조인
RUBY-ON-RAILShas_and_belongs_to_many에 대한 마이그레이션을 레일 테이블 조인
내가 스크립트를 어떻게해야합니까 / A는 has_and_belongs_to_many 관계를 테이블에 가입 만드는 마이그레이션을 생성?
응용 프로그램 레일 2.3.2에서 실행,하지만 나는 또한 레일 3.0.3가 설치되어 있습니다.
해결법
-
==============================
1.어디:
어디:
class Teacher < ActiveRecord::Base has_and_belongs_to_many :students end
과
class Student < ActiveRecord::Base has_and_belongs_to_many :teachers end
레일 4 :
rails generate migration CreateJoinTableStudentTeacher student teacher
레일 3 :
rails generate migration students_teachers student_id:integer teacher_id:integer
레일 <3
script/generate migration students_teachers student_id:integer teacher_id:integer
(테이블 이름 목록을 참고 모두 알파벳 순서로 테이블을 조인)
다음에 대해 3 레일과 id 필드가 생성되지 않도록 아래에만, 당신은 편집에 생성 된 마이그레이션이 필요합니다 :
create_table :students_teachers, :id => false do |t|
-
==============================
2.has_and_belongs_to_many 테이블이 형식과 일치해야합니다. 나는 DB에서 이미 두 모델이 has_and_belongs_to_many에 합류 할 수있다 있으리라 믿고있어 : 사과와 오렌지 :
has_and_belongs_to_many 테이블이 형식과 일치해야합니다. 나는 DB에서 이미 두 모델이 has_and_belongs_to_many에 합류 할 수있다 있으리라 믿고있어 : 사과와 오렌지 :
create_table :apples_oranges, :id => false do |t| t.references :apple, :null => false t.references :orange, :null => false end # Adding the index can massively speed up join tables. Don't use the # unique if you allow duplicates. add_index(:apples_oranges, [:apple_id, :orange_id], :unique => true)
당신이 사용하는 경우 : 인덱스에 고유 => 사실을, 당신은 (레일 3) 전달해야합니다 : has_and_belongs_to_many에 UNIQ는 => 사실.
더 많은 정보 : 레일 문서
나는 ID와 타임 스탬프를 제거하도록 업데이트되었습니다 2010-12-13 업데이트 ... 기본적으로 MattDiPasquale 및 nunopolonia가 올바른지 :의 ID가 없어야합니다 거기에 타임 스탬프해서는 안이나 레일 작업에 has_and_belongs_to_many을 허용하지 않습니다.
-
==============================
3.당신은 당신이 알파벳 순서로 연결하려는 테이블 2 개 모델의 이름을 이름을 지정해야 테이블에서 두 모델의 id를 넣어. 그런 다음 모델의 연결을 만들어 서로 각 모델을 연결합니다.
당신은 당신이 알파벳 순서로 연결하려는 테이블 2 개 모델의 이름을 이름을 지정해야 테이블에서 두 모델의 id를 넣어. 그런 다음 모델의 연결을 만들어 서로 각 모델을 연결합니다.
다음은 그 예이다 :
# in migration def self.up create_table 'categories_products', :id => false do |t| t.column :category_id, :integer t.column :product_id, :integer end end # models/product.rb has_and_belongs_to_many :categories # models/category.rb has_and_belongs_to_many :products
그러나 이것은 매우 유연하지 당신은 has_many을 사용하는 방법에 대해 생각해야합니다 통해
-
==============================
4.복합 인덱스 내가 생각하지 않는 것이 최고 응답 쇼는 오렌지에서 사과를 조회하는 데 사용됩니다.
복합 인덱스 내가 생각하지 않는 것이 최고 응답 쇼는 오렌지에서 사과를 조회하는 데 사용됩니다.
create_table :apples_oranges, :id => false do |t| t.references :apple, :null => false t.references :orange, :null => false end # Adding the index can massively speed up join tables. # This enforces uniqueness and speeds up apple->oranges lookups. add_index(:apples_oranges, [:apple_id, :orange_id], :unique => true) # This speeds up orange->apple lookups add_index(:apples_oranges, :orange_id)
나는 확실히 너무 너무 '닥터 무엇 유용하고 토론하여이의 기반이 답을 발견했다.
-
==============================
5.4 레일, 당신은 간단하게 사용을 할 수 있습니다
4 레일, 당신은 간단하게 사용을 할 수 있습니다
create_join_table : table1s : table2s
그것이 전부입니다.
주의 : 숫자와 당신이해야 offord 표 1, 표 2.
-
==============================
6.나는 일을 좋아한다 :
나는 일을 좋아한다 :
레일 g 이주 CreateJoinedTable 모델 1 : 참조 모델 2 : 참조. 그런 식으로 나는 마이그레이션을 얻을 것을 다음과 같다 :
class CreateJoinedTable < ActiveRecord::Migration def change create_table :joined_tables do |t| t.references :trip, index: true t.references :category, index: true end add_foreign_key :joined_tables, :trips add_foreign_key :joined_tables, :categories end end
나는 종종 이러한 열을 사용하여 조회를하고있을 것이기 때문에 나는이 컬럼에 인덱스를 보내고 있습니다.
from https://stackoverflow.com/questions/4381154/rails-migration-for-has-and-belongs-to-many-join-table by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 어떻게 RSpec에를 사용하여 JSON 응답을 확인하는? (0) | 2020.02.17 |
---|---|
[RUBY-ON-RAILS] 루비 온 레일즈에서 컨트롤러간에 코드를 재사용 모범 사례 (0) | 2020.02.17 |
[RUBY-ON-RAILS] 베스트 루비 레일 웹 소켓 도구 [폐쇄] (0) | 2020.02.17 |
[RUBY-ON-RAILS] 음주 레이크 작업 액티브 모델에 대한 액세스를 제공 레일? (0) | 2020.02.17 |
[RUBY-ON-RAILS] 4 레일 : 자산 생산에로드되지 (0) | 2020.02.17 |