Сменные миграции для Redmine

там какой-либо хороший пример для предоставления различия между 'структурой' и 'объединением'?

мнимый коммуникационный протокол

struct packetheader {
   int sourceaddress;
   int destaddress;
   int messagetype;
   union request {
       char fourcc[4];
       int requestnumber;
   };
};

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

Объединения являются в основном деталью низкого уровня, базирующейся в наследии C как системный язык программирования, где "перекрывающиеся" места хранения иногда используются таким образом. Можно иногда использовать объединения для сохранения памяти, где у Вас есть структура данных, где только один из нескольких типов будет сохранен когда-то.

В целом, ОС не заботится или знает о структурах и объединениях - они - оба просто блоки памяти к ней. Структура является блоком памяти, которая хранит несколько объектов данных, где те объекты не накладываются. Объединение является блоком памяти, которая хранит несколько объектов данных, но имеет только устройство хранения данных для самого большого из них, и таким образом может только сохранить один из объектов данных в любой момент.

9
задан Simone Carletti 3 August 2009 в 08:44
поделиться

2 ответа

Вы можете использовать скрипт / генерировать миграцию , чтобы создать миграцию, а затем переместить ее в каталог плагина. При перемещении убедитесь, что вы изменили формат с отметкой времени (20090719 ...) на целочисленный формат (001 _...)

Я обычно сам создаю миграции вручную, поскольку они довольно простые.

Эрик Дэвис

10
ответ дан 4 December 2019 в 21:11
поделиться

Большинство плагинов делают это (думая о restful_authentication и других) - это наличие генератора, который должен запускаться при установке плагина. Это сгенерирует миграцию и поместит ее в db / migrate, где она затем станет частью миграции вашего проекта. Я не могу придумать лучшего способа сделать это. Использование чего-то вроде desert может помочь, но также добавляет свои накладные расходы.

0
ответ дан 4 December 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: