我有一个请求表,状态为其中的一个字段和一个遇到表。 “状态”字段显示状态表中的下拉列表。我想要的是,状态的每次更改都会在遇到的表中创建一条新记录,该记录会记录每个请求的所有状态。我需要一个如何实现这一目标的建议。
申请表
<%= 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
在request.rb上,你有一个?在self.changes.keys.include?(:status_id)?
结束时标记,这是一个错误的上升。让它像self.changes.keys.include?(:status_id)
。
你可以使用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
结束