すべての会社は1つのCompanyContactを持つことになっています。私の会社のフォームには、会社の連絡先のフィールドがあります。私が会社を更新して新しい会社の連絡先を追加すると、それはうまくいきます。なぜなら、会社のショーページには新しい会社の連絡先が表示されるからです。しかし、編集ページ(私はまだ更新ボタンをクリックしていない)に移動する編集リンクをクリックすると、会社連絡先が空であるはずの編集会社フォームに何も表示されません。だから私はログを確認し、会社の連絡先は削除されました。Rails 3.編集ページに移動したときに、ネストされたレコードが削除されるのはなぜですか?
DELETE FROM "company_contacts" WHERE "company_contacts"."id" = ? [["id", 4]]
私は任意の削除アクションを呼び出していないので、私は混乱しています。
----------------------------------------
company.rb
has_one :company_contact, :dependent => :destroy
accepts_nested_attributes_for :company_contact
----------------------------------------
company_contact.rb
belongs_to :company
----------------------------------------
companies_controller.rb
def new
@company = Company.new
company_contact = @company.build_company_contact
respond_to do |format|
format.html # new.html.erb
format.json { render json: @company }
end
end
def edit
@company = Company.find(params[:id])
company_contact = @company.build_company_contact
end
'@ company.build_company_contact'は、関連するレコードが' has_one'関係のために存在する場合、そのレコードを削除すると思います。私はこれが正当なものだと思うが、予期せぬことがある。 –
レコードは提供されたコードでdbに保存されていないので、削除が正当化される方法はわかりません。 – UncleGene
@UncleGene彼が投稿したコードが全話を伝えると仮定するのは間違いだと思います。彼は、作成アクションによって救われなかったレコードについて何も言わなかった。したがって、私は彼が期待するべきであるように見えるレコードのために彼が編集アクションを打っているという前提で操作しています。 –