2010-05-12 24 views
2

在我的模型示例遊戲中,有一個狀態欄。但我通常使用符號來設置狀態。例如在Rails模型中;符號保存到數據庫時會自動轉換爲YAML。什麼是正確的方法?

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將「---」附加到每個狀態。所以當我回到狀態是擰緊。

什麼應該是正確的方法?

回答

3

覆蓋getter和二傳手:

def status 
    read_attribute(:status).to_sym 
end 

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

這個工作。謝謝 – Ram 2010-05-12 09:10:23

+0

爲什麼這不是符號的默認值? – Ram 2010-05-12 09:11:24

+2

我的猜測是因爲如果它們被序列化爲字符串,那麼在反序列化中將無法告訴反序列化的東西 - 一個字符串或一個符號。 – 2010-05-12 09:27:20

相關問題