我的数据库中有一个json列(实际上是jsonb,但这里没关系)table items 只有普通
{
"key1":"value1",
"key2":"value2"
}
结构。没有嵌套。
“键”实际上是指向属性表的类似外键的整数,看起来像
id | name
-----------
1 | Height
2 | Weight
3 | Color
等
我正在使用ActiveAdmin进行管理,并希望在编辑由选择输入和文本字段组成的项时获得自定义输入>,这将允许我:
无法弄清楚如何。
我尝试了什么以及我的问题是什么?
我在app / inputs / property_input.rb中创建了一个自定义输入:
class PropertyInput
include Formtastic::Inputs::Base
include Formtastic::Inputs::Base::Collections
def to_html
input_wrapping do
label_html <<
select_html <<
text_html
end
end
protected
def select_html
builder.select(input_name, collection, input_options, input_html_options)
end
include Formtastic::Inputs::Base::Stringish
include Formtastic::Inputs::Base::Placeholder
def text_html
builder.text_field(input_name)
end
end
从admin / item.rb
调用以下内容f.input :property, as: :property, collection: ItemAttribute.all
我的问题是:
现在,select正确显示了属性的名称,但是text字段只显示了同一属性的id。如何解耦这两个字段并强制文本字段保存并从Item jsonb列中读取?
在这种情况下,我可能会说不在项目和属性模型之间使用ActiveRecord关联很重要,因为我不确定它是否适用于持有“外键”的jsonb列。