Rails에서 모든 관련 모델을 업데이트하는 방법은 무엇입니까?

이기

Rails와 React를 사용하고 있습니다. 두 가지 모델이 있습니다 : scheduleworker. worker belongs_to scheduleschedule has_many workers. 반응에서 레일에 업데이트 요청을하고 싶습니다.

fetch요청을 보내는 데 사용 하는 함수는 다음과 같습니다.

function updateSchedule(scheduleId, date, message, workersArray, cb){
  return fetch(`api/schedules/${scheduleId}`, {
    method: 'PUT',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      date: date,
      message: message,
      user_id: 1,
      worker_info: workersArray
    })
  }).then((response) => response.json())
    .then(cb);
}

workerArray 샘플 :

[{"id"=>54, "name"=>"Owen
 Johnston", "phone"=>"111-222-3333", "created_at"=>"2017-06-13T22:17:45.769Z", "updated_at"=>"2017-06-13T22:17:45.769Z", "schedule_id"=>33}, {"id"=
>55, "name"=>"Mary Watson", "phone"=>"123-456-7890", "created_at"=>"2017-06-13T22:17:45.778Z", "updated_at"=>"2017-06-13T22:17:45.778Z", "schedule_
id"=>33}]

일정에는 날짜, 메시지 및 user_id 속성이 있습니다. 일정에는 또한 특정 작업자 그룹이 있습니다. 각 작업자는 namephone. 요컨대, 특정 일정에 따라 모든 작업자 이름과 전화 번호를 포함하여 일정의 속성을 업데이트하고 싶습니다. 해당 일정에 속한 모든 작업자를 반복하고 각 작업자의 매개 변수를 업데이트하는 데 문제가 있습니다.

이것이 일반적인 생각입니다. update작업 방법을 만드는 데 문제 가 있습니다.

  def update
    @schedule = Schedule.find(params[:id])
    if @schedule.update_attributes(schedule_params)
      worker_params["worker_info"].each do |w|
        @worker = Worker.find(w.id)
        @worker.update_attributes!
      end
      render json: @schedule
    else
      render json: @schedule, status: :unprocessable_entity
    end
  end

...
  def schedule_params
    params.require(:schedule).permit(:date, :message, :user_id)
  end


  def worker_params
    params.permit(worker_info: [:name, :phone])
  end

react에서 rails로 put 요청을 보내고 Rails에게 일정 및 일정과 관련된 모든 작업자를 업데이트하도록하려면 어떻게해야합니까?

31piy

Rails로 보내는 내용에 차이가 있지만 올바른 매개 변수를 보내고 일정을 업데이트 할 수 있다고 가정 해 보겠습니다 (근로자 제외). 불일치는 schedule매개 변수에 키를 보내는 것이 아니라 다음 줄에 필요하다는 것입니다.

params.require(:schedule).permit(:date, :message, :user_id)

최종 JSON (rails로 보내는)이 다음과 같은지 확인하십시오.

{
  "schedule": {
    "date": "...your date",
    "message": "...message",
    "user_id": "...user_id"
  }
}

내가 생각하는 실제 문제에 도달하는 것은 작업자를 업데이트 할 수 없다는 것입니다. Rails에는 고통을 덜어 줄 모델에 대한 특별한 지침이 있습니다.

당신의에서 Schedule모델 작성 :

accepts_nested_attributes_for :workers, allow_destroy: true

이렇게하면 모델이 하위 속성도 업데이트 할 수 있습니다. 이 후에 컨트롤러를 약간 변경해야합니다.

def schedule_params
  params.require(:schedule).permit(:date, :message, :user_id, workers_attributes: [:id, :name, :phone, :_destroy])
end

그런 다음을 사용 @schedule.update_attributes(schedule_params)하여 일정과 작업자를 업데이트합니다.

최종 JSON은 다음과 같아야합니다.

{
  "schedule": {
    "date": "...your date",
    "message": "...message",
    "user_id": "...user_id",
    "workers_attributes": [{
      "id": 123,
      "name: "...name",
      "phone": "...phone"
    }]
  }
}

일정과 관련된 작업자를 추가 / 업데이트 / 삭제할지 여부를 정의하는 작업자 속성 배열을 전달할 수 있습니다. 계속하기 전에 accepts_nested_attributes_for 에 대해 자세히 읽어 볼 수 있습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

관련 모델에서 네임 스페이스 모델을 참조하는 방법은 무엇입니까?

분류에서Dev

Windows에서 Ruby와 관련된 openssl 모듈을 업데이트하는 방법은 무엇입니까?

분류에서Dev

레일에서 직접 관련되지 않은 두 모델을 연결하는 방법은 무엇입니까?

분류에서Dev

Rails 5, 관련 테이블로 두 모델의 이름을 지정하는 방법은 무엇입니까?

분류에서Dev

하나의 트랜잭션에 관련 모델을 저장하는 방법은 무엇입니까?

분류에서Dev

Django에서 사용자와 관련된 모든 관련 개체를 얻는 방법은 무엇입니까?

분류에서Dev

ManyToOneRel 개체에서 관련 모델 클래스 이름을 얻는 방법은 무엇입니까?

분류에서Dev

Sails.js 루프에서 관련 모델을 검색하는 방법은 무엇입니까?

분류에서Dev

Laravel에서 다른 관련 모델 데이터에 액세스하는 방법은 무엇입니까?

분류에서Dev

MVVM 패턴에서 모델을 업데이트하고 모델을 보는 방법은 무엇입니까?

분류에서Dev

Phoenix에서 모델 관계를 업데이트하는 방법은 무엇입니까?

분류에서Dev

Laravel Eloquent에서 관련 모델을 업데이트하는 방법

분류에서Dev

GIT에서 병합 커밋과 관련된 모든 커밋을 찾는 방법은 무엇입니까?

분류에서Dev

Rails 4에서 관련 모델별로 주문하고 방향을 지정하는 방법은 무엇입니까?

분류에서Dev

Django Rest Framework의 관련 모델에서 데이터를 가져 오는 방법은 무엇입니까?

분류에서Dev

컨트롤러 방법이 작동하지 않음 : 관련 모델에서 관련 레코드를 찾는 방법은 무엇입니까?

분류에서Dev

Django 프레임 워크에서 모든 모델의 삽입 또는 업데이트 작업을 감지하는 방법은 무엇입니까?

분류에서Dev

Magento에서 모든 관련 제품 링크를 제거하는 방법은 무엇입니까?

분류에서Dev

Ember 2.7 모델 상속-부모와 관련된 모델에서 가져온 템플릿의 데이터에 액세스하는 방법은 무엇입니까?

분류에서Dev

PostgreSQL에서 관계 모델을 보는 방법은 무엇입니까?

분류에서Dev

link_to를 사용한 후 RoR에서 관련 모델에 액세스하는 방법은 무엇입니까?

분류에서Dev

Django에서 사용자 지정 관리자 작업을 통해 관련 모델을 얻는 방법은 무엇입니까?

분류에서Dev

Django에서 사용자 지정 관리자 작업을 통해 관련 모델을 얻는 방법은 무엇입니까?

분류에서Dev

데이터 지속성과 관련된 모델을 TDD (Test-Driven-Development)하는 방법은 무엇입니까?

분류에서Dev

두 개의 관련 Eloquent 모델에서 매개 변수를 표시하는 방법은 무엇입니까?

분류에서Dev

모델 업데이트에서 렌더링을 안전하게 분리하는 방법은 무엇입니까?

분류에서Dev

Laravel에서 관련 테이블을 업데이트하는 방법은 무엇입니까?

분류에서Dev

Laravel은 여러 모델에 대한 모든 관련 모델을 얻습니다.

분류에서Dev

views.py에서 모델의 값을 업데이트하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    관련 모델에서 네임 스페이스 모델을 참조하는 방법은 무엇입니까?

  2. 2

    Windows에서 Ruby와 관련된 openssl 모듈을 업데이트하는 방법은 무엇입니까?

  3. 3

    레일에서 직접 관련되지 않은 두 모델을 연결하는 방법은 무엇입니까?

  4. 4

    Rails 5, 관련 테이블로 두 모델의 이름을 지정하는 방법은 무엇입니까?

  5. 5

    하나의 트랜잭션에 관련 모델을 저장하는 방법은 무엇입니까?

  6. 6

    Django에서 사용자와 관련된 모든 관련 개체를 얻는 방법은 무엇입니까?

  7. 7

    ManyToOneRel 개체에서 관련 모델 클래스 이름을 얻는 방법은 무엇입니까?

  8. 8

    Sails.js 루프에서 관련 모델을 검색하는 방법은 무엇입니까?

  9. 9

    Laravel에서 다른 관련 모델 데이터에 액세스하는 방법은 무엇입니까?

  10. 10

    MVVM 패턴에서 모델을 업데이트하고 모델을 보는 방법은 무엇입니까?

  11. 11

    Phoenix에서 모델 관계를 업데이트하는 방법은 무엇입니까?

  12. 12

    Laravel Eloquent에서 관련 모델을 업데이트하는 방법

  13. 13

    GIT에서 병합 커밋과 관련된 모든 커밋을 찾는 방법은 무엇입니까?

  14. 14

    Rails 4에서 관련 모델별로 주문하고 방향을 지정하는 방법은 무엇입니까?

  15. 15

    Django Rest Framework의 관련 모델에서 데이터를 가져 오는 방법은 무엇입니까?

  16. 16

    컨트롤러 방법이 작동하지 않음 : 관련 모델에서 관련 레코드를 찾는 방법은 무엇입니까?

  17. 17

    Django 프레임 워크에서 모든 모델의 삽입 또는 업데이트 작업을 감지하는 방법은 무엇입니까?

  18. 18

    Magento에서 모든 관련 제품 링크를 제거하는 방법은 무엇입니까?

  19. 19

    Ember 2.7 모델 상속-부모와 관련된 모델에서 가져온 템플릿의 데이터에 액세스하는 방법은 무엇입니까?

  20. 20

    PostgreSQL에서 관계 모델을 보는 방법은 무엇입니까?

  21. 21

    link_to를 사용한 후 RoR에서 관련 모델에 액세스하는 방법은 무엇입니까?

  22. 22

    Django에서 사용자 지정 관리자 작업을 통해 관련 모델을 얻는 방법은 무엇입니까?

  23. 23

    Django에서 사용자 지정 관리자 작업을 통해 관련 모델을 얻는 방법은 무엇입니까?

  24. 24

    데이터 지속성과 관련된 모델을 TDD (Test-Driven-Development)하는 방법은 무엇입니까?

  25. 25

    두 개의 관련 Eloquent 모델에서 매개 변수를 표시하는 방법은 무엇입니까?

  26. 26

    모델 업데이트에서 렌더링을 안전하게 분리하는 방법은 무엇입니까?

  27. 27

    Laravel에서 관련 테이블을 업데이트하는 방법은 무엇입니까?

  28. 28

    Laravel은 여러 모델에 대한 모든 관련 모델을 얻습니다.

  29. 29

    views.py에서 모델의 값을 업데이트하는 방법은 무엇입니까?

뜨겁다태그

보관