簡體   English   中英

rails accepts_nested_attributes_for-錯誤:Mysql2 :: Error:未知列“提供”。 在“ where子句”中

[英]rails accepts_nested_attributes_for - Error: Mysql2::Error: Unknown column 'offers.' in 'where clause'

代碼是:

class Client < ActiveRecord::Base
  ...
  has_one :offer, :dependent => :destroy
  accepts_nested_attributes_for :offer
  ...
end

class Offer < ActiveRecord::Base
  ...
  belongs_to :client
  ...
end


<%= simple_form_for [:admin, @client], :html=>  {:multipart => true } do |f| %>
..some input fields
<%= f.simple_fields_for :offer, @client.new_record? ? Offer.new : ""  do |o| %>
..some input fields

這適用於新條目,但不會更新。

錯誤:Mysql2 ::錯誤:未知列“提供”。 在'where子句':DELETE FROM offers WHERE offers .`` = 718

當我將客戶端模型更改為:

accepts_nested_attributes_for :offer, :reject_if => lambda {|a| a[:name].blank?}

錯誤消息消失了,它更新了客戶表而不是要約表。

這正在工作:

  has_one :offer, :dependent => :destroy
  accepts_nested_attributes_for :offer, allow_destroy: true

  belongs_to :client

  <%= f.simple_fields_for :offer, @client.new_record? ? Offer.new : @client.offer  do |o| %>

首先,似乎不合邏輯地無法進行更新,例如在執行操作時:

<%= f.simple_fields_for :offer, @client.new_record? ? Offer.new : ""  do |o| %>

的簡單字段將嘗試為“”創建字段,而應該使用offer對象。 您可以使用以下方法解決此問題(可能會有更好的方法,這只是一個解決方案,而不是THE解決方案)

<%= f.simple_fields_for :offer, @client.offer.new_record? ? Offer.new : @client.offer  do |o| %>

編輯:我認為最好只建立報價,如果它不存在,那么這里看起來像:

<% @client.build_offer if @client.offer.new_record? %>
<%= f.simple_fields_for :offer do |o| %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM