Я хочу создать набор значений в Ruby, который я могу хранить и получать в базе данных MySQL под Rails.
В Delphi я бы использовал:
//Create an enumeration with four possible values
type TColour = (clRed, clBue, clBlack, clWhite);
//Create a set which can hold values from the above enumeration
TColours = set of TColours;
//Create a variable to hold the set
var MyColours = TColours;
begin
//Set the variable to hold two values from the enumeration
MyColours = [clRed, clBlack];
//MyColours now contains clRed and clBlack, but not clBlue or clWhite
//Use a typecast to convert MyColours to an integer and store it in the database
StoreInDatabase(Integer(MyColours));
//Typecast the Integer back to a set to retrieve it from the database
MyColours := TColours(RetrieveFromDatabase);
end;
Затем я могу использовать Typecast для преобразования в / из целого числа.
Как бы я достиг того же в Ruby / Rails?
Просто чтобы уточнить, предположим, что у меня есть форма с флажками «Красный», «Синий», «Черный», «Белый». Пользователь может выбрать не одно, одно или несколько значений. Как мне сохранить и получить этот набор значений?
Кстати, еще один способ сделать это в Delphi - использовать побитовую математику:
const
Red = 1;
Blue = 2;
Black = 4;
White = 8;
var MyColours: Integer;
begin
MyColours := Red+Black; //(or MyColours = Red or Black)
который может быть сохранен и извлечен как целое число