2017-01-24 13 views
0

私はモデルジョブとモデルユーザーを持っていますが、どちらもコントラクトタイプを選択できます(そのため、多態性が使用されます)。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"]

アイデアはありますか?問題は多形移植にあるかもしれませんか?

+0

レール・デバッグ・コンソールで、許可されていないパラメータ通知が表示されますか? – jvillian

+0

@jvillianいいえ私はそれのようなものは何もありません! – Etienne

+0

ごめんなさい。それが私の唯一の推測でした。 – jvillian

答えて

0

最後に、要求されたパラメータを「contract_ids:[]」で変更しました。これは完全に機能しています。

関連する問題