2017-04-25 8 views
0

に配列(has_manyの関連付け)を通過しない私は、イベントを保存するためのAPI event#createを書かれているモデルeventと別のモデルevent_ruleRailsの - 5:どのように私は、コントローラのアクション

class Event < ApplicationRecord 
    has_many :event_rules 
end 

class EventRule < ApplicationRecord 
    belongs_to :event 
end 

を持っています。ここではPOSTリクエストのボディです:

{ 
    "name": "asd", 
    "code": "ad", 
    "isActive": true, 
    "description": "asd", 
    "notes": "", 
    "goalAmount": 0, 
    "exportId": "", 
    "defaultCurrency": 1, 
    "eventStartDate": "2017-04-25T18:30:00.000Z", 
    "eventEndDate": "2017-04-27T18:30:00.000Z", 
    "eventRules": [ 
     { 
      "extraInformation": "{}", 
      "lookupKeyValuePairId": 40 
     } 
    ] 
} 

はここparamsハッシュです:

Parameters: {"name"=>"asd", "code"=>"ad", "is_active"=>true, "description"=>"asd", "notes"=>"", "goal_amount"=>0, "export_id"=>"", "default_currency"=>1, "event_start_date"=>"2017-04-25T18:30:00.000Z", "event_end_date"=>"2017-04-27T18:30:00.000Z", "event_rules"=>[{"extra_information"=>"{}", "lookup_key_value_pair_id"=>40}], "client_id"=>"0", "event"=>{"name"=>"asd", "code"=>"ad", "description"=>"asd", "is_active"=>true, "goal_amount"=>0, "export_id"=>"", "event_start_date"=>"2017-04-25T18:30:00.000Z", "event_end_date"=>"2017-04-27T18:30:00.000Z", "default_currency"=>1, "notes"=>""}} 

私はevent内部に含まれる 'event_rules' をしたいです。どのようにこれを行うことができますか?

+0

フォームの中にコードを追加してください。 –

+0

APIです。だから、見解はない。 – mridula

+0

あなたの作成メソッドを共有してください – Sajin

答えて

0

代替レールウェイソリューション:

あなたが送信されますパラメータを制御している場合は、次のようにあなたの要求を再フォーマット(event_rules_attributesevent_rulesを変更するのでノートを取る - Railsの標準)(More Info Here)

Parameters: { 
    "event"=>{ 
    "name"=>"asd", 
    "code"=>"ad", 
    "description"=>"asd", 
    "is_active"=>true, 
    "goal_amount"=>0, 
    "export_id"=>"", 
    "event_start_date"=>"2017-04-25T18:30:00.000Z", 
    "event_end_date"=>"2017-04-27T18:30:00.000Z", 
    "default_currency"=>1, 
    "notes"=>"", 
    "event_rules_attributes"=>[ 
     { 
     "extra_information"=>"{}", 
     "lookup_key_value_pair_id"=>40 
     } 
    ] 
    } 
} 


# controllers/events_controller.rb 
def create 
    event = Event.new(event_params) 

    if event.save 
    # SUCCESS 
    else 
    # FAILURE 
    end 
end 

private 

def event_params 
    params.require(:event).permit(:name, :code, :is_active, :description, :notes, :goal_amount, :export_id, :default_currency, :event_start_date, :event_end_date, :notes, event_rules_attributes: [:extra_information, :lookup_key_value_pair_id]) 
end 

# models/event.rb 
accepts_nested_attributes_for :event_rules 
+0

ありがとう、私はこれを試してみます。 – mridula

関連する問題