저는 RoR을 처음 접했기 때문에이 권리에 대해 생각하지 않는다면 사과드립니다. 보고서에 여러 사용자를 할당 할 수 있어야하는 보고서가 있습니다. 사용자는 둘 이상의 보고서에 할당 될 수 있으며 보고서에는 여러 사용자가있을 수 있습니다. 이것이 허용되는 데이터베이스 관계를 어떻게 만들 수 있습니까? 하나의 보고서에 하나의 사용자를 할당하는 방법을 이해했지만 하나의 보고서에 많은 사용자를 할당하는 것은 아닙니다.동일한 id의 다중 배정을 허용하는 데이터베이스 관계 만들기
0
A
답변
2
나는이 일어날 수 있도록하기 위해 합류 클래스를 사용하십시오 : report_id
및 user_id
이 관계를 만들 :
class Report
has_many :assignments
has_many :users :through => :assignments
end
class User
has_many :assignments
has_many :reports, :through => :assignments
end
class Assignment
belongs_to :report
belongs_to :user
end
클래스 Assignment
두 개의 필드가 있습니다.
0
내가보기 엔 당신이 레일 가이드에 루비를 숙지하시기 바랍니다. 그들은 귀중한 자산이 될 것입니다 !! 이 업무를 위해 위치는 RailsGuides Active Record Associations 일 것입니다.
코드가 실행되면 reports_users가 조인 테이블 인 reports, reports_users 및 users의 세 가지 데이터베이스 테이블을 만들고 싶습니다.
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name, :null => false
t.timestamps
end
end
end
class CreateReports < ActiveRecord::Migration
def change
create_table :reports do |t|
t.string :name, :null => false
t.timestamps
end
end
end
class ReportsUsers < ActiveRecord::Migration
def change
create_table :reports_users, :id => false do |t|
t.references :user, :null => false
t.references :report, :null => false
end
end
end
이 마이그레이션을 실행 한 후에는 모델에서 활성 레코드 연결을 설정해야합니다.
class User < ActiveRecord::Base
has_and_belongs_to_many :reports
end
class Report < ActiveRecord::Base
has_and_belongs_to_many :user
end
이렇게하면 데이터베이스와 다 대다 모델 연결이 설정됩니다. 이렇게하면 시작할 수 있습니다. 이제 몇 가지보기를 만들어야합니다.
+0
참고로 Rails 가이드 사이트는 http://guides.rubyonrails.org/이며 다른 사이트는 http://api.rubyonrails.org/의 레일 API 페이지입니다. –
관련 문제
- 1. 데이터베이스 설계 : 동일한 엔티티의 다중 단항 관계
- 2. Yii 다중 데이터베이스 관계
- 3. 데이터베이스 디자인의 다중 관계 문제
- 4. 동일한 NSManagedObjects 간의 다중 관계
- 5. 동일한 의미의 레일과의 다중 관계
- 6. 동일한 유형의 다중 관계 클래스
- 7. Cypher 쿼리 다중 관계 만들기
- 8. 프로그래밍 방식으로 데이터베이스 관계 만들기
- 9. ID의 MySQL 다중 테이블 조인
- 10. 다중 카테고리/제품 관계 데이터베이스 스키마
- 11. CakePHP에서 동일한 두 모델 간의 다중 관계?
- 12. JPA 동일한 엔티티에 대한 OneToMany 다중 관계
- 13. CakePHP : HABTM을 사용하여 동일한 모델과 다중 관계
- 14. 동일한 ID의 두보기
- 15. 동일한 ID의 데이터 병합
- 16. 동일한 스레드 ID의
- 17. 데이터베이스 동일한 엔티티의 레코드와의 연관 관계
- 18. 데이터베이스 동일한 테이블에 의존하는 테이블 간의 관계
- 19. 데이터베이스 ID의 PHP 순차 폴더 이름
- 20. ASP.NET MVC 라우팅 문제 : 허용하는 방법 "\"ID의
- 21. 동일한 속성을 가진 노드 간의 관계 만들기
- 22. Objectify 키와 Long ID의 관계 저장
- 23. JQGrid : 동일한 ID의 요소를 생성하는 고정 열
- 24. ID의 반복 횟수를 기반으로 다중 시퀀스를 사용하여 벡터 만들기
- 25. 다중 상속을 허용하는 Java
- 26. 다중 테이블과의 관계
- 27. 데이터베이스 관계
- 28. 데이터베이스 관계
- 29. 데이터베이스 관계
- 30. 데이터베이스 관계
좋아, 이해하기 시작했는데, 왜 내가 has_and_belongs_to_many를 사용하지 않겠습니까? 더 많은 사용자와 사용자가 많은 보고서에 속할 수 있습니까? 도와 줘서 고마워. – user2128197
당신은 그것을 사용할 수 있지만, 위와 같은 것을 사용하면 원하는 경우 Assignments (예 : 날짜, 메모 등)에 필드를 추가 할 수있는 동일한 기능을 얻을 수 있습니다. habtm은 조인 테이블을 숨 깁니다. 전반적인 기능은 비슷합니다. –