2014-11-19 3 views
0

일치하는 레코드를 반환하는 나는이 개 모델을 가지고 : 직원 및 작업 직원이 많은 일자리와 직업을 가지고 직원에 속하는포도 API 쿼리

내 API에서 직원 및 작업에 대한 CRUD 엔드 포인트가

그리고 마지막으로 나는 직원이 작업 또한 내가

module MyApi::V1::Entities 
    class EmployeeResponseEntity < Grape::Entity 
    expose :id 
    expose :name 
    expose :active 
    expose :one_time 
    expose :cycle 
    expose :jobs, using: MyApi::V1::Entities::JobResponseEntity 
    end 
end 
이 내 직원 엔티티에서

을 생성 할 수 있습니다 생성하므로 작업에서 중첩 된 속성을 수용 할 수있는 모델 직원이

여기에 내가 취소 작업을 검색하지 않으

module MyApi::V1::Entities 
    class JobResponseEntity < Grape::Entity 

    expose :id, documentation: { type: 'integer', desc: 'ID' } 
    expose :date, documentation: { type: 'date', desc: 'Date' } 
    expose :start_time, documentation: { type: 'time', desc: 'Start Time' } 
    expose :end_time, documentation: { type: 'time', desc: 'End Time' } 
    expose :notes, documentation: { type: 'text', desc: 'Notes' } 
    expose :status, documentation: { type: 'string', desc: 'Status' } 
    expose :cancelled, documentation: { type: 'boolean', desc: 'Cancelled' } 
    expose :paid, documentation: { type: 'boolean', desc: 'Paid' } 
    end 
end 

작업과 START_DATE < Time.now()

이 모델 또는 법인 논리가 무엇입니까?

미리 감사드립니다.

답변

1

이러한 종류의 제한은 항상 모델 논리에 의해 이루어집니다. 학교 관리자 응용 프로그램과 같은 유사한 예제가 많이 있습니다. 클라이언트가 클래스 # 1을 반환하도록 API에 요청하고 등급이 6보다 크거나 같은 모든 학생을 가정 해 보겠습니다. 어떻게 모델링 할 수 있습니까?

내 의견으로는 리소스 /class/1/students? min_grade = 6을 통해 모델링해야합니다. 나는 당신이 URI /class/1을 통해 그것을 모델링하고 특정 등급의 학생들 만 돌려 보내야한다고 생각하지 않는다. 이 시나리오에서는 엔티티가 아닌 모델에서이 필터링을 수행해야합니다.

문제로이 같은 아이디어를 적용, 당신은 = /직원/1/작업? _ 날짜 = 12/2,014분의 12 & 상태와 같은 활성를 URI에 모델링해야하며,이 필터링은 모델이 아니라 당신을하셔야합니다 실재.

+0

완벽 ... 정확히 내가 찾고있는 것. – Marrento

관련 문제