Создайте новую строку в другой таблице с изменением статуса в другой таблице. - PullRequest
0 голосов
/ 27 марта 2019

У меня есть таблица запросов со статусом в качестве поля и таблица встреч.Поле состояния отображает раскрывающийся список из таблицы состояния.Я хочу, чтобы при каждом изменении статуса в таблице встреч создавалась новая запись, в которой хранятся записи всех статусов для каждого запроса.Мне нужна рекомендация о том, как этого можно достичь.

request_form

<%= form_for([@client, @request], local: true) do |form| %>
  <div class="field">
    <%= form.label :status_id %>
    <%= form.collection_select :status_id, Status.all, :status, :status, {prompt: "Select"}, autofocus:true %>
  </div>
<% end %>

схема таблицы встреч

create_table "encounters", force: :cascade do |t|
    t.integer "request_id"
    t.date "status_change_date"
    t.integer "admin_id"
    t.string "notes"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

request.rb

has_many :encounters

meet.rb

belongs_to :request

request.rb

after_update :create_encounter
def create_encounter
    if self.changes.keys.include?(:status_id)?
      puts "updated"
    end
  end

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

На request.rb у вас есть? отметьте в конце self.changes.keys.include?(:status_id)?, что вызывает ошибку. Пусть это как self.changes.keys.include?(:status_id).

0 голосов
/ 27 марта 2019

Вы можете использовать модель рельса обратного вызова

по запросу. Rb

after_update :create_encounter

def create_encounter
  if self.changes.keys.include?(:status_id)
   # your code to create encounter related to request
  end

конец

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