我正在寻找一种方法来编辑/添加与文章相关的关键字,在 Activeadmin 中内联。
我定义了一个简单的多对多设置:
class Area < ActiveRecord::Base
has_many :area_keywords
has_many :keywords, :through => :area_keywords
accepts_nested_attributes_for :keywords, :reject_if => :all_blank, :allow_destroy => true
end
class AreaKeyword < ActiveRecord::Base
belongs_to :area
belongs_to :keyword
end
class Keyword < ActiveRecord::Base
has_many :area_keywords
has_many :areas, :through => :area_keywords
end
我想以 en Area 形式添加和编辑关键字,所以我在 Aciveadmin 中进行了设置:
ActiveAdmin.register Area do
form do |f|
f.inputs "Area details" do
f.input :title
f.input :description
end
f.has_many :keywords do |k|
if k.object.nil?
k.input :word, :label => 'Keyword'
else
k.input :word, :label => k.object.word
k.input :_destroy, :as => :boolean, :label => "delete"
end
end
end
end
这按预期工作。
但是,如果我将相同的关键字添加到两个不同的区域,则该关键字只会被创建两次。
输入新关键字时(在“区域”表单中),我希望它自动创建与现有关键字的关系,或者创建一个新关键字,如果它不存在。最好的方法是什么?