在Rails模型中; 保存到DB时,符号会自动转换为YAML。 什么是正确的方法?

在我的模型示例Game中,有一个状态列。 但我通常使用符号设置状态。 例

  self.status =:活跃 

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 

我使用上面的Map在可查看状态和反之间切换。

但是,当数据保存到db时,ActiveRecord会将“—”附加到每个状态。 因此,当我回收时,状态被搞砸了。

什么应该是正确的方法?

覆盖getter和setter:

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