В моделях Rails; для символов автоматически конвертируются в YAML при сохранении в БД. Какой правильный подход? - PullRequest
2 голосов
/ 12 мая 2010

В моем примере модели Game, есть столбец состояния. Но я обычно устанавливаю статус с помощью символов. Пример

self.status = :active
    MATCH_STATUS = { 
      :betting_on => "Betting is on",
      :home_team_won => "Home team has won",
      :visiting_team_won => "Visiting team has one",
      :game_tie => "Game is tied"
    }.freeze

def viewable_status
  MATCH_STATUS[self.status]
end

Я использую вышеуказанную карту для переключения между видимым статусом и наоборот.

Однако, когда данные сохраняются в БД, ActiveRecord добавляет «---» к каждому состоянию. Поэтому, когда я получаю обратно, статус ввернут.

Каким должен быть правильный подход?

1 Ответ

3 голосов
/ 12 мая 2010

Переопределить геттер и сеттер:

def status
  read_attribute(:status).to_sym
end

def status=(new_status)
  write_attribute :status, new_status.to_s
end
...