在activeadmin中编辑父记录的关系

时间:2019-04-10 17:38:48

标签: ruby-on-rails activeadmin has-many-through has-and-belongs-to-many

我具有以下模型结构:

  • Composition有很多ScoreScore属于Composition
  • Composition拥有并属于许多Countries(反之亦然)

score.rb

class Score < ApplicationRecord
  belongs_to :composition
end

composition.rb

class Composition < ApplicationRecord
  has_many :scores
  has_and_belongs_to_many :countries, join_table: :rights_countries
end

country.rb

class Country < ApplicationRecord
  has_and_belongs_to_many :compositions, join_table: :rights_countries
end

在activeadmin中,我希望能够编辑乐曲的国家/地区,但可以分数的编辑形式。 / p>

当然,表单将从合成中导入此数据,并且默认输入对于合成的所有分数(子级)都是相等的。

到目前为止,我发现没有办法在activeadmin中实现它。

这甚至可能吗?如果是,该解决方案简单还是麻烦?

1 个答案:

答案 0 :(得分:0)

this link之后,我在inputs内添加了inputs并更新了相应的参数。我还在得分模型中添加了accepts_nested_attributes_for :composition

app / models / score.rb

...
accepts_nested_attributes_for :composition
...

app / admin / score.rb

...
permit_params ...,
              composition_attributes: [:id, country_ids: []]
...
form do |f|
  f.inputs do
    ...
    f.inputs "", for: [:composition, score.composition] do |c|
      c.input :countries, as: :select, collection: Country.order_by_name.uniq.map { |p| [p.name, p.id] }
    end
  end
end

让我知道是否有更清洁的解决方案。