2013-09-27 3 views
0

한 사용자가 그룹의 지원을 요청할 수 있도록 레일스 앱을 구축 중입니다.별도의 제휴가 필요합니까?

Class User 
    has_many :requests 

Class Request 
    belongs_to :users 

현재 사용자는 다른 링크를 클릭하여 다른 하위 그룹으로 요청을 보냅니다. 사용자가 사용자를 선택/선택 취소하도록하여 추가 사용자 정의를 허용하고 싶습니다.

이 작업을 수행하려면 연결이 필요합니까? 뭔가가 ...

Class User 
    has_many :sent_requests, class_name 'Request' 
    has_many :received_requests 
    has_many :requests, :through received_requests 

Class Request 
    belongs_to :client, class_name 'User' 
    has_many :received_requests 

Class ReceivedRequest 
    belongs_to :user 
    belongs_to :client 

이것은 엉덩이의 고통처럼 보입니다. - 요청에 @users 인스턴스 변수를 생성합니다. # 새 컨트롤러 작업을 어떤 연관도없이 생성합니다. -보기로 전달하고 양식 표시 확인란을 사용합니다. - 사용자에게 선택을 취소하도록합니다. - 어떻게 든 그 변수를 다시 전달합니다. 생성 작업

좀 더 일반적인 질문은 내가 어떻게 연관을 추가해야한다고 결정합니까?

마지막으로 중첩 된 리소스를 사용해야 할 수도 있습니까?

도움 주셔서 감사합니다. 나는이 새로운 ...

답변

0

당신은 어떤 사용자가 데이터베이스의 특정 요청과 링크되어 있는지 저장하기를 원하기 때문에 여기서 연관을 사용해야합니다. 연결은 이러한 종류의 관계를 레일과 함께 저장하는 적절한 방법입니다.

연결이 제대로 설정되면 실제로 관리하기가 쉽습니다. 이 경우에는 중첩 된 리소스를 사용하는 데 어떤 이점도 없습니다.

대안으로는 수정 된 HABTM 연관을 사용하는 것일 뿐이지 만 조인 모델에 속성을 포함시켜 어느 사용자가 요청을 소유하고 어떤 사용자가이를 수신하는지 나타낼 수 있습니다.

Class User 
    has_many :requests, through: :user_requests 
    has_many :user_requests 

Class Request 
    has_many :users, through: :user_requests 
    has_many :user_requests 

Class UserRequest 
    belongs_to :user 
    belongs_to :request 

UserRequest에는 owner라는 속성이 있습니다. 요청을 실행하는 사용자와 요청 개체 간의 조인에 대해이 값을 true로 설정합니다. 해당 요청과 관련된 사용자의 나머지 부분이이를 수령 할 것입니다.

+0

감사합니다. 많은 의미가 있습니다. – bluemihai