2017-12-13 16 views
1

従業員とクーポンはhabtm関連の2つのモデルです。coupon_idとemp_idをテーブルに追加して送信します。各従業員は複数のクーポンを選択できます。このデータをAPIから送信する方法。rails post api json data passing

[{"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 

制御から

class Coupon < ActiveModelSerializers::Model 
    attributes :id  
end 

CouponSerializerで充填剤:

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

これはあなたがhas_and_belongs_to_manyを使用しているので、最初にあなたが参加するテーブルに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