在另一个表中创建一个新行,并在其他表中更改状态

问题描述 投票:0回答:2

我有一个请求表,状态为其中的一个字段和一个遇到表。 “状态”字段显示状态表中的下拉列表。我想要的是,状态的每次更改都会在遇到的表中创建一条新记录,该记录会记录每个请求的所有状态。我需要一个如何实现这一目标的建议。

申请表

<%= 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

encounter.rb

belongs_to :request

request.rb

after_update :create_encounter
def create_encounter
    if self.changes.keys.include?(:status_id)?
      puts "updated"
    end
  end
ruby-on-rails ruby-on-rails-5
2个回答
0
投票

在request.rb上,你有一个?在self.changes.keys.include?(:status_id)?结束时标记,这是一个错误的上升。让它像self.changes.keys.include?(:status_id)


0
投票

你可以使用rails模型回调

on request.rb

after_update :create_encounter

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

结束

© www.soinside.com 2019 - 2024. All rights reserved.