In Rails models; for symbols get automatically con

2019-05-22 13:21发布

In my model example Game, has a status column. But I usually set status by using symbols. Example

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

I use the above Map to switch between viewable status and viceversa.

However when the data gets saved to db, ActiveRecord appends "--- " to each status. So when I retrieve back the status is screwed.

What should be the correct approach?

1条回答
一夜七次
2楼-- · 2019-05-22 13:52

Override the getter and the setter:

def status
  read_attribute(:status).to_sym
end

def status=(new_status)
  write_attribute :status, new_status.to_s
end
查看更多
登录 后发表回答