【问题标题】:Solve query sql with rails用rails解决查询sql
【发布时间】:2016-04-26 20:05:27
【问题描述】:

我需要在创建 Historic 时这样做:

Table historic
id authorization_origin_id
1   2
2   3

你在下面的图片中看到了什么

这是我的 new.html.erb

<%= simple_form_for(@refinancing) do |f| %>
  <div class="form-inputs">
    <%= f.hidden_field :employee_id, value: @employee.first.id %>
    <%= f.input :contract_number %>
  </div>

  <h3>Reserved value</h3>
  <table class="table table-condensed table-bordered table-striped">
    <thead>
      <th>Authorization id</th>
      <th>Contract number</th>
    </thead>
    <% @authorizations.each do |authorization| %>
      <tbody>
        <tr>
          <td><%= authorization.id %></td>
          <td><%= authorization.contract_number %></td>
        </tr>
      </tbody>
    <% end %>
  </table>

  <div class="form-actions">
    <%= f.button :submit, "To Reserve" %>
  </div>
<% end %>

这是我的控制器:

def new
    if params[:authorization].present?
      @selected_ids = params[:authorization][:contract_number]
      @authorizations = Authorization.where("contract_number in (?)", @selected_ids)
      auth_params = params[:authorization]
      auth_params[:contract_number].zip(auth_params[:value_solve].reject(&:blank?)).each do |contract_number, value_solve|
          Authorization.where(contract_number: contract_number).update_all(value_solve: value_solve, situation: 2)
      end

      @authorizations.ids.each do |auth_id|
        @historic_refinancing = HistoricRefinancing.create
        @historic_refinancing = HistoricRefinancing.where(authorization_origin_id: auth_id).update_all(authorization_origin_id: auth_id)
      end

    end

    @employee = Employee.search_cpf(params[:search_employee_by_cpf])
    @refinancing = Refinancing.new

  end

目前,出现此错误:

authorization_origin_id 为空,请问我是怎么得到的?

【问题讨论】:

    标签: sql ruby-on-rails ruby-on-rails-4 sql-update where-clause


    【解决方案1】:

    在您的控制器中,您正在创建不带任何参数的 HistoricRefinancing

    HistoricRefinancing.create 创建一个带有 null 的 authorization_origin_id、refinancing_id 和 authorization_new_id 的条目。

    下面的代码什么都不做,它尝试用authorization_origin_id == auth_id 查找HistoricRefinancings,然后将该字段更新为相同的auth_id 值。

    @historic_refinancing = HistoricRefinancing.where(authorization_origin_id: auth_id).update_all(authorization_origin_id: auth_id)

    不清楚你想在控制器的那部分做什么,但我怀疑你想把两条线都压缩成HistoricRefinancing.create(authorization_origin_id: auth_id)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多