[英]Rails - Accepts_nested_attributes_for mass assignment error
[英]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
WHEREoffers
.`` = 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.