我有一个这样注册的ActiveAdmin模型:
ActiveAdmin.register MyModel do
permit_params :name, :synonyms
filter :name
index do
selectable_column
column :name
actions
end
end
我注意到,当我从ActiveAdmin界面更新对象时,同义词将被清除。同义词是在PostgreSQL数据库中定义的数组字段:
synonyms text[] DEFAULT '{}'::text[]
我尝试将以下内容放入app/admin/my_model.rb
:
controller do
def update
permitted_params[:my_model][:synonyms] = JSON.parse permitted_params[:my_model][:synonyms]
super
end
end
,我也使用params
而不是permitted_params
进行了尝试,但这也不起作用。不知道为什么ActiveAdmin会丢弃此字段。我做错了什么吗?我正在使用的项目使用ActiveAdmin 1.0.0.pre4(我意识到这是一个过时的版本)。
任何建议将不胜感激。预先感谢!
注意:好像是a common issue吗?
答案 0 :(得分:0)
我不确定这是否适用于字符串数组,并且我不知道该特定版本的Activeadmin,但是我在稍有不同的情况下遇到了此问题。
我有一个模型,其中数组数据类型为小数和整数。我必须明确说明在编辑/更新记录时要使用的表单输入的类型,或者没有任何内容通过更新参数从字段传回。 Activeadmin默认选择一个数字输入,但需要将其作为字符串处理。
form do |f|
f.inputs do
f.input :ages, as :string, :input_html => {:maxlength => '100'}
end
end
我必须手动设置maxlength,因为由于某种原因,它会被自动设置得很短。在模型中,必须先将字符串转换为实际数组,然后再保存。
def ages= items
if items.is_a? String
items = items.split(' ')
items.each do |i|
i.to_i
end
end
super items
end