ネストされた属性を扱うためにJSONの投稿を取得しました。子モデルでJSONレコードを投稿することはできません。特定のフィールド名でネストされた属性をレンダリングする
しかし、レコードを更新すると、アップロードプログラムはモデルのレールIDを知らないため、「tracking_id」というフィールドを検索します。その片方向のアップロードとそれに不可抗力のままです。このフィールドを使用して、私は正しいレコードを見つけて更新を投稿することができます。しかし、更新された代わりに子が挿入されます。
クライアントアプリケーションはそれが何であるか分からないので、定義したフィールドに基づいて子どもを見つける方法を教えてもらえますか?
例:私が好きな何
#in Event Model
def self.batch_create(post_content, keymaster)
#keymaster is the user so we can add events to the right place
# begin exception handling
begin
# begin a transaction on the event model
Event.transaction do
# for each event record in the passed json
JSON.parse(post_content).each do |event_hash|
# create a new event
# if hash has tracking_id use that
if event_hash["tracking_id"].present?
event = keymaster.events.where(tracking_id: event_hash["tracking_id"]).first_or_initialize
else
event = keymaster.events.new
end
if event
# update the existing event record
event.update!(event_hash)
end # event.count
end # json.parse
end # transaction
rescue Exception => e
Rails.logger.info("Did not create batch events")
Rails.logger.info("caught exception #{e}! ohnoes!")
# Rails.logger.info(post_content)
end # exception handling
end # batch_create
はイベントレコードの子どもたちのために同じ機能です。イベントに既に参加している場合は、新しい行を挿入するだけでなく、イベントを更新します。
コントローラが子モデルを見つけるためにどのようなパラメータフィールドを定義しますか?できればparams/controllerからいくつかのサンプルコードを提供できますか? –
詳細情報を追加 –