визуализировать форму с данными json, используя postgre hstore

У меня есть столбец атрибутов в одной из моих моделей,

а Attributes column - это тип hstore, он хранит строку формата JSON,

Я хочу, чтобы мой пользователь редактировал его в обычном виде,

Я хотел бы, чтобы он мог автоматически охватывать 4 поля ввода,

name

range

security

default_value

есть ли драгоценный камень, чтобы достичь этого?

введите здесь описание изображения

ОБНОВИТЬ

Я следовал решению @zwippie и правильно показывал его в форме,

Но его нельзя обновить,

Когда я попытался обновить его,

Но я должен добавить эти поля в сильные параметры,

есть ли какой-либо динамический способ добиться этого.

Чтобы расширить все столбцы в hstro, а не жестко кодировать store_accessor :cgi_attributes, :name, :range, :security, :default_value, а также добавить его в белый список

= f.text_area column, class: 'input-xxlarge' 

Но это


person newBike    schedule 21.05.2014    source источник


Ответы (3)


Rails 4 может сделать это из коробки. Добавьте это в свою модель:

store_accessor :attributes, :name, :range, :security, :default_value

Теперь вы можете использовать атрибуты hstore как обычные атрибуты Active Record:

item = Item.find(2)
item.update(security: '5/6')

Или в форме:

<%= f.text_field :default_value %>
person zwippie    schedule 21.05.2014
comment
Я следовал вашему решению, но все еще есть некоторые проблемы, я обновил свой пост, спасибо за вашу поддержку :) - person newBike; 21.05.2014
comment
@newBike, я знаю, что это устарело, но на случай, если кто-то увидит это, обязательно обновите свои сильные параметры, чтобы принять store_accessors. - person Pierre; 16.05.2016

Я не думаю, что есть жемчужина для достижения этого, но это все еще возможно с помощью метапрограммирования.

Используя метапрограммирование, вы можете динамически создавать методы на основе данных объекта. Я объяснил это здесь для сериализованных данных, что очень вероятно для вашей ситуации.

Вам нужно расширить представление, но это не такая проблема, вы можете просто вызвать метод, который возвращает все ключи сериализованных данных, а затем прокручивает их и генерирует входные данные.

person davidb    schedule 21.05.2014

Я думаю, Hstore PostgreSQL может быть полезно, если вы используете базу данных postgresql в своем приложении.

person bhanu    schedule 20.10.2014