我有一个请求表,其中的状态是一个字段和一个遭遇表。状态字段显示状态表 中的下拉列表。我想要的是,随着状态的每次更改,都会在遭遇表中创建一个新记录,该记录保留每个请求的所有状态的记录。我需要关于如何实现这一目标的建议。
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
请求.rb
has_many :encounters
邂逅.rb
belongs_to :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 模型回调
根据要求.rb
after_update :create_encounter
def create_encounter
if self.changes.keys.include?(:status_id)
# your code to create encounter related to request
end
结束