рельсы 4 обновления объекта вызывают создание связанной модели того же действия - PullRequest
0 голосов
/ 23 февраля 2020

В моем приложении crm есть модель возможности и модель комментария (полиморф c, который может принадлежать возможности). У меня есть действия status_edit и status_update, в которых есть форма для изменения статуса возможности. Я хотел бы, чтобы это действие вызвало создание нового комментария. (есть другие способы создания комментариев, которые уже хорошо работают). возможность обновлена, но новый связанный комментарий отсутствует.

 def status_update
   @opportunity.update(opportunity_params)
   if @opportunity.save
     @comment = @opportunity.comments.new(name: "Status was changed to #{@opportunity.status}", description: "#{@opportunity.status_reason}")
     @comment.save!
     redirect_to opportunity_path(@opportunity)
     ...
 end

журнал сервера:

  SQL (1.5ms)  UPDATE "crm_opportunities" SET "status" = ?, "updated_at" = ? WHERE "crm_opportunities"."id" = ?  [["status", 3], ["updated_

at", "2020-02-23 07:07:33.936820"], ["id", 26]]
   (16.6ms)  commit transaction
   (0.2ms)  begin transaction
   (0.1ms)  commit transaction
Redirected to http://localhost:3000/crm_opportunities/26
Completed 302 Found in 45ms (ActiveRecord: 19.4ms)

маршруты:

  resources :opportunities do
    resources :comments
    member do
      get :status_edit
      patch :status_update
    end
  end

Спасибо всем!

1 Ответ

0 голосов
/ 23 февраля 2020

, поскольку комментарии принадлежат Opportunity, вы можете использовать build для создания новой записи для комментариев

ниже приведен пример создания комментария

 @comment = @opportunity.comments.build(name: "Status was changed to #{@opportunity.status}", description: "#{@opportunity.status_reason}")
 @comment.save

, если вышеуказанный метод все еще не работает, пожалуйста проверьте также правильность, установленную в модели комментария

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...