관계를 통해 has_many의 조인 엔티티에 대한 Rails 필드

Bitops

나는 이것에 대해 잘못된 방향으로 가고 있을지 모르지만, 연관과 범위에 대한 다양한 SO 기사와 Rails 문서를 읽은 후, 나는 그다지 현명하지 않다.

다음과 같이 표현되는 다 대일 관계가 있습니다.

class User < ActiveRecord::Base
  has_many :user_program_records
  has_many :programs, through: :user_program_records
end

class Program < ActiveRecord::Base
  has_many :user_program_records
  has_many :users, through: :user_program_records
end

class UserProgramRecord < ActiveRecord::Base
  belongs_to :user
  belongs_to :program

  # has a field "role"
end

아이디어는 시스템과 많은 프로그램에 많은 사용자가 있다는 것입니다. 프로그램에는 많은 사용자가 있으며 사용자는 여러 프로그램에 속할 수 있습니다. 그러나-주어진 프로그램 내에서 사용자는 하나의 역할 만 가질 수 있습니다.

내가 정말로 쓸 수 있기를 바라는 것은 :

Program.first.users.first.role

저에게 역할 (단지 String) 을 반환하도록 합니다.

이를 수행하는 가장 깨끗한 방법은 무엇입니까? 기본적으로 사용자의 범위를 지정된 프로그램으로 지정하면 관련 조인 테이블의 필드에 어떻게 깔끔하게 액세스 할 수 있습니까?

최대

당신은 그것에 대해 약간 잘못 생각하고 있습니다.

user.role

사용자가 다른 프로그램에서 다른 역할을 가질 수 있으므로 매우 모호합니다. 대신 조인 엔터티를 자체적으로 생각해야합니다.

가장 쉬운 방법은 결합 모델을 직접 선택하는 것입니다.

program = Program.includes(:user_program_records, :users).first
role = program.user_program_records
                .find_by(user: program.users.first)
                .role

연관 확장 및 도우미 메서드와 같은 것을 사용하여 좀 더 섹시하게 만들 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Symfony2-두 엔티티를 참조하는 하나의 필드에 대한 하나의 ManyToOne 관계

분류에서Dev

최대 has_many 관계에서만 조인하고 해당 관계에 대한 선택 필터를 포함하는 Ruby on Rails에서 쿼리를 작성하려면 어떻게해야합니까?

분류에서Dev

동일한 다른 엔티티에 대해 2 개의 ManyToOne 관계를 갖는 하나의 엔티티

분류에서Dev

Rails 객체를 통해 속성에 대한 has_many 쿼리

분류에서Dev

관계를 통해 has_many에 대한 ActiveRecord :: InvalidForeignKey

분류에서Dev

연관을 통해 has_many를 추가 할 때 nil : NilClass에 대한 정의되지 않은 메소드`username '

분류에서Dev

Has_many : create 메서드에 대한 쿼리를 통해

분류에서Dev

rails 3 / active records / postgresql의 조건과 함께 has_many 관계를 통해 주문

분류에서Dev

Hibernate-여러 필드에서 동일한 엔티티로의 관계

분류에서Dev

하나의 엔티티가 동일한 엔티티 유형의 2 개를 참조하는 엔티티 관계?

분류에서Dev

NHibernate : 지연로드없이 하나의 SQL 쿼리를 통해 하위 엔티티에 대한 필터를 사용하여 하위 엔티티를 열심히 가져 오는 방법은 무엇입니까?

분류에서Dev

belongs_to / has_many 관계에 대한 마이그레이션에 add_index를 사용해야합니까? (레일 3.2, 액티브 레코드)

분류에서Dev

has_many 관계의 .count 결과에 대한 Ransack 정렬, rails 4

분류에서Dev

도메인 기반 설계-상위 엔티티에 대한 엔티티의 하위 순서

분류에서Dev

SpringData REST : 하나의 엔티티에 대한 다중 엔드 포인트

분류에서Dev

Rails : has_many : through 연관에있는 조인 테이블의 여러 새 레코드에 속성 값 추가

분류에서Dev

레일에서 다 대다 관계를 통해 엔티티 파괴

분류에서Dev

JPA 엔티티 필드에 대한 모델 조회 테이블

분류에서Dev

동일한 STI 모델을 통해 Rails 연관 has_many 및 has_many

분류에서Dev

has_many : 연결을 통해, 쉘의 Rails 콘솔에서 "No Method Error", NoMethodError : # <ActiveRecord :: Relation :>에 대한 정의되지 않은 메서드

분류에서Dev

Rails 4+ has_many를 통해 하나의 관계가 있습니까?

분류에서Dev

자체 참조 엔티티에 대한 Typeorm 중첩 관계

분류에서Dev

연관을 통해 has_many로 생성은 NoMethodError를 얻습니다 (nil : NilClass에 대한 정의되지 않은 메소드`name ').

분류에서Dev

has_many : 관계 조작을 통해

분류에서Dev

동일한 모델에 대한 has_many 관계, 여러 필드 이름

분류에서Dev

동일한 엔터티 / 필드의 조건을 확인하기 위해 자체 조인 쿼리를 작성하는 방법

분류에서Dev

Rails는`has_many : through` 텍스트 필드를 통해 검색합니다.

분류에서Dev

조인 된 다른 엔터티 필드 값에 따라 한 엔터티 쿼리

분류에서Dev

Rails는 has_many : through를 사용하여 조인 테이블의 추가 필드를 편집합니다.

Related 관련 기사

  1. 1

    Symfony2-두 엔티티를 참조하는 하나의 필드에 대한 하나의 ManyToOne 관계

  2. 2

    최대 has_many 관계에서만 조인하고 해당 관계에 대한 선택 필터를 포함하는 Ruby on Rails에서 쿼리를 작성하려면 어떻게해야합니까?

  3. 3

    동일한 다른 엔티티에 대해 2 개의 ManyToOne 관계를 갖는 하나의 엔티티

  4. 4

    Rails 객체를 통해 속성에 대한 has_many 쿼리

  5. 5

    관계를 통해 has_many에 대한 ActiveRecord :: InvalidForeignKey

  6. 6

    연관을 통해 has_many를 추가 할 때 nil : NilClass에 대한 정의되지 않은 메소드`username '

  7. 7

    Has_many : create 메서드에 대한 쿼리를 통해

  8. 8

    rails 3 / active records / postgresql의 조건과 함께 has_many 관계를 통해 주문

  9. 9

    Hibernate-여러 필드에서 동일한 엔티티로의 관계

  10. 10

    하나의 엔티티가 동일한 엔티티 유형의 2 개를 참조하는 엔티티 관계?

  11. 11

    NHibernate : 지연로드없이 하나의 SQL 쿼리를 통해 하위 엔티티에 대한 필터를 사용하여 하위 엔티티를 열심히 가져 오는 방법은 무엇입니까?

  12. 12

    belongs_to / has_many 관계에 대한 마이그레이션에 add_index를 사용해야합니까? (레일 3.2, 액티브 레코드)

  13. 13

    has_many 관계의 .count 결과에 대한 Ransack 정렬, rails 4

  14. 14

    도메인 기반 설계-상위 엔티티에 대한 엔티티의 하위 순서

  15. 15

    SpringData REST : 하나의 엔티티에 대한 다중 엔드 포인트

  16. 16

    Rails : has_many : through 연관에있는 조인 테이블의 여러 새 레코드에 속성 값 추가

  17. 17

    레일에서 다 대다 관계를 통해 엔티티 파괴

  18. 18

    JPA 엔티티 필드에 대한 모델 조회 테이블

  19. 19

    동일한 STI 모델을 통해 Rails 연관 has_many 및 has_many

  20. 20

    has_many : 연결을 통해, 쉘의 Rails 콘솔에서 "No Method Error", NoMethodError : # <ActiveRecord :: Relation :>에 대한 정의되지 않은 메서드

  21. 21

    Rails 4+ has_many를 통해 하나의 관계가 있습니까?

  22. 22

    자체 참조 엔티티에 대한 Typeorm 중첩 관계

  23. 23

    연관을 통해 has_many로 생성은 NoMethodError를 얻습니다 (nil : NilClass에 대한 정의되지 않은 메소드`name ').

  24. 24

    has_many : 관계 조작을 통해

  25. 25

    동일한 모델에 대한 has_many 관계, 여러 필드 이름

  26. 26

    동일한 엔터티 / 필드의 조건을 확인하기 위해 자체 조인 쿼리를 작성하는 방법

  27. 27

    Rails는`has_many : through` 텍스트 필드를 통해 검색합니다.

  28. 28

    조인 된 다른 엔터티 필드 값에 따라 한 엔터티 쿼리

  29. 29

    Rails는 has_many : through를 사용하여 조인 테이블의 추가 필드를 편집합니다.

뜨겁다태그

보관