我有一个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