私はモデルジョブとモデルユーザーを持っていますが、どちらもコントラクトタイプを選択できます(そのため、多態性が使用されます)。Railsモデルはポリモーフィックのデータを保存しません
私は契約ごとにモデル契約を作成しましたが、私は添付された契約モデルも作成します。
仕事モデル
class Job < ApplicationRecord
has_many :contracts, through: :attached_contracts
has_many :attached_contracts, as: :contractable, dependent: :destroy
accepts_nested_attributes_for :attached_contracts, reject_if: :all_blank, allow_destroy: true
end
AttachedContractモデル
class AttachedContract < ApplicationRecord
belongs_to :contract
belongs_to :contractable, polymorphic: true
validates :contract, uniqueness: { scope: [:contractable_type,:contractable_id] }
end
契約モデル
class Contract < ApplicationRecord
validates :name, presence: true, allow_blank: false
has_many :attached_contracts
end
Jobs_controller私の見解では
def new
@job = Job.new
@job.attached_contracts.build
end
def create
@job = current_company.jobs.build(set_params)
if @job.save
redirect_to job_path(@job)
end
else
render :new
end
end
def set_params
params.require(:job).permit(:title, :description, :address, attached_contracts_attributes: [:id, :contract_id, :_destroy]
end
:
<%= simple_form_for([:company, @job]) do |f| %>
<div class="nested-fields">
<%= f.association :contracts, as: :check_boxes %>
</div>
<% end %>
私はまだ私のモデルAttachedContract空の私のフォーム提出し、データが失われ。
私はTUが@job = current_company.jobs.build(set_params) 後に私のコントローラで「昇給」を入れて試してみて、私は私はbeause理解していない job.attached_contracts @呼び出した場合、私は空の配列を持っています"要求パラメータ"(レールデバッグコンソール) "contract_ids" => [""、 "1"、 "3"]
アイデアはありますか?問題は多形移植にあるかもしれませんか?
レール・デバッグ・コンソールで、許可されていないパラメータ通知が表示されますか? – jvillian
@jvillianいいえ私はそれのようなものは何もありません! – Etienne
ごめんなさい。それが私の唯一の推測でした。 – jvillian