У меня есть стол для родителей, дети и стол для сбора средств. У дочерней таблицы есть parent_id, у таблицы с данными child_id. Родитель подает заявку на финансирование различных мероприятий для своих детей. Каждый ребенок может иметь более одной заявки на финансирование. Поле amount_remaining в дочерней таблице по умолчанию составляет $ 400 для каждого дочернего элемента. В таблице финансирования есть поле сумма_запрошенная для операции финансирования. Как только поле статуса в таблице финансирования изменяется на одобренное, сумма_запрошенного вычитается из суммы_перечисления для конкретного дочернего элемента. Как это возможно. Пожалуйста, помогите мне. Я попробовал шаги ниже, но это не работает.
child.rb
after_save do
if status_changed? && status == 'Approved'
amount_remaining = child.amount_remaining - funding.amount_requested
child.update_attributes(amount_remaining: amount_remaining)
end
end
схема для таблицы финансирования
create_table "fundings", force: :cascade do |t|
t.string "type_of_activity"
t.integer "amount_requested"
t.integer "child_id"
t.string "status"
end
схема для детского стола
create_table "children", force: :cascade do |t|
t.string "firstname"
t.string "lastname"
t.integer "parent_id"
t.integer "amount_remaining"
end
_form.html.erb (форма заявки на финансирование)
<div class = "form-group">
<div class="control-label col-sm-2">
<%= form.label :amount_requested, class: "required" %>
</div>
<div class="col-sm-8">
<%= form.text_field :amount_requested, required: true %>
</div>
</div>
<div class = "form-group">
<div class="control-label col-sm-2">
<%= form.label :status %>
</div>
<% if current_user.superadmin? %>
<div class="col-sm-8">
<%= form.select :status,['Pending', 'Approved', 'Declined'], {}, id: "sample-status-select", class: "form-control" %>
</div>
<% else %>
<div class="col-sm-8">
<%= form.select :status,['Pending', 'Approved', 'Declined'], {class: "form-control"}, {:disabled => true} %>
</div>
</div>
<% end %>