2017-12-13 13 views
1

직원 및 쿠폰은 habtm 연관이있는 두 모델이며 coupon_id 및 emp_id를 테이블에 조인하고 싶습니다. 각 직원은 여러 쿠폰, API에서이 데이터를 보내는 방법을 선택할 수 있습니다.rails post api json 데이터 전달

[{"emp_id" : 1, "coupon_id": 5 },{"emp_id" : 1, "coupon_id": 2 }] 

데이터 매개 변수를 전송하는 적절한 방법입니까? 각 직원은 한 번에 여러 쿠폰을 선택할 수 있습니다. 어떻게 데이터를 전달하고 조인 테이블에 저장할 수 있습니까?

답변

0

gem 'active_model_serializers'을 json 응답을 사용자 지정하는 데 사용할 수 있습니다.

설치 한 후 'active_model_serializers' :

rails g serializer employee rails g serializer coupon

에서 EmployeeSerializer

class Employee < ActiveModelSerializers::Model 
    attributes :id 
    has_many: coupons 
end 

contro에서

class Coupon < ActiveModelSerializers::Model 
    attributes :id  
end 

CouponSerializer에서 크 로스 : 당신은 has_and_belongs_to_many을 사용하고 있기 때문에

def emp_coupon 
    @response = Employee.last 
    render json: @response 
end 

이 먼저 당신이 테이블 coupons_employees 가입 만든 확인이 {id: 1, coupons: [{id: 2}, {id: 6}]}

+0

@Belinski,하지만 같은 emp_id가 반복됩니다. 어쨌든 우리가 지킬 수 있을까요? emp_id 상수를 유지할 수 있습니까? {emp_id, {copon_id1, coupon_id2 ......}} – Pbms

+0

@belinski {id : 1, 쿠폰 : [{id : 2}, {id : 6}]} Api에서 가져온 것입니다. Employee.save 또는 Coupons.save와 같은 데이터를 저장하여 조인 테이블 – Pbms

+0

에있는 레코드를 만드는 방법은 nested_attributtes를 살펴보십시오. 조인 테이블의 중첩 된 속성을 허용하도록 각 모델, 직원 및 쿠폰을 설정할 수 있습니다. 이제 각 컨트롤러에 맞는 매개 변수를 컨트롤러에 전달합니다. –

0

같은를 반환합니다.

이 테이블은 연결된 활성 레코드에 의해 자동으로 업데이트됩니다. 조인 테이블을 수동으로 업데이트 할 필요가 없습니다. 나는 이것을 통과하는 것이 좋습니다 guide