Вы знаете, как некоторые трекеры ошибок (и другое программное обеспечение) позволяют добавлять пользовательские поля?Rails - добавление пользовательских полей во время выполнения в ActiveRecord
Обычно это делается с помощью структуры данных, которая выглядит примерно так:
Items
----------
ID | NAME | ITEM_TYPE_ID
FieldDefinitions
---------------------------------------
ID | ITEM_TYPE_ID | FIELD_NAME | FIELD_TYPE
FieldValues
---------------------------------------
ID | FIELD_ID | ITEM_ID | VALUE
Я пытаюсь выяснить, лучший способ приблизиться к этой конструкции в Rails. Будет много моделей, которые я хочу разрешить для распространения простых свойств.
Когда я возвращаю Item
, я бы хотел, чтобы он включал хэш значений поля добавления, которые были определены для этой модели.
Использование инъекции, вероятно, было бы лучшей формой. Как self.field_values.inject ({}) {| memo, fv | memo [fv.field_definition] = fv} или аналогичный. –
Это то, о чем я думал, что буду использовать ... было интересно, был ли более «рубиновый» способ сделать это ... –
Обычный способ, вероятно, вообще не использовать хеш и просто использовать сгенерированную ассоциацию методы, но я думаю, есть причина, почему вы особенно хотели хэш ...? –