Тип столбца 'set' и Rails - PullRequest
       9

Тип столбца 'set' и Rails

2 голосов
/ 12 января 2010

Я строю базу онлайн предложений.Каждое предложение может быть просмотрено в одной или нескольких странах, например, рекламодатель может быть заинтересован в получении предложений в США и Канаде.

Список стран, которые мы охватываем, составляет около 50, каждая из которых обозначенаДвухбуквенная аббревиатура стандарта ISO, такая как США, CA, GB, FR, DE и т.д.тип столбца «SET» в MySQL и Postgres (см. документацию MySQL по «SET TYPE» здесь ).

Я попытался добавить столбец типа «set» следующим образом:

  t.set :regions, :limit => ["GB","FR","DE"]

Это не выдает ошибку , но поле 'регионов' теперь отсутствует в моем объекте.Я не могу найти много в Google, так как слово «набор» является наиболее часто используемым словом в английском языке (более 140 различных использований и 6 страниц в словаре).Единственная релевантная статья была о Rails Wiki от 2006 года, которая в настоящее время написана в 404-м году.

Буду признателен за любые указатели и тем временем внедрит habtm.

1 Ответ

1 голос
/ 12 января 2010

Я переопределил методы доступа по умолчанию в моей модели следующим образом:

def regions=(list)
  write_attribute(:regions, pack(list))
end

def regions
  read_attribute(:regions).split("::")
end

private
def pack(var)
  field = var[0]
  list = var.dup
  list.shift
  list.each do |i|
    field = [field,i].join("::")
  end
  field
end

Я установил в поле «регионы» тип «текст». Этот код хранит список с разделителем "::".

...