コードは次のとおりです。
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::エラー: 列 'offers' が不明です。「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| %>