ruby-on-rails-4 has_many:through,dependent :: destroy

时间:2015-07-28 18:24:52

标签: ruby-on-rails ruby-on-rails-4

我有一个has_many,:我通过复选框创建的关系。我还想从众多模型中创建一个进一步的关系。

我的情况是;我正在创建一个包含场景的测试计划。我通过设置复选框包括我想要的方案。这将创建scenario_test记录和相关的scenario_test_steps。到目前为止,非常好。

但是,当我清除复选框时,只删除scenario_test记录并且scenario_test_steps保持孤立状态。 有人能提供解决方案吗?一些想法?我这一切都错了吗?

class Scenario < ActiveRecord::Base
  has_many :scenario_tests, dependent: :destroy
  has_many :test_plans, through: :scenario_tests
end

class TestPlan < ActiveRecord::Base
  has_many :scenario_tests, dependent: :destroy
  has_many :scenarios, through: :scenario_tests
end

class ScenarioTest < ActiveRecord::Base
  belongs_to :test_plan
  belongs_to :scenario
  has_many :scenario_test_steps, dependent: :destroy
end

class ScenarioTestStep < ActiveRecord::Base
  belongs_to :scenario_test
end

class TestPlansController < ApplicationController
  def test_plan_params
    params.require(:test_plan).permit(:scenario_ids => [])
  end
end

在我的view.haml.html

= hidden_field_tag "test_plan[scenario_ids][]", nil
%table
  %thead
    %tr
      %th Selected
      %th Scenario Code
      %th Scenario
  %tbody
    - @scenarios.each do |scenario|
      %tr
        %td= check_box_tag "test_plan[scenario_ids][]", scenario.id, @test_plan.scenario_ids.include?(scenario.id), id: dom_id(scenario)
        %td= label_tag dom_id(scenario), scenario.code
        %td= label_tag dom_id(scenario), scenario.name

0 个答案:

没有答案