Ruby Rails - 使用枚举查询记录

时间:2015-09-01 00:55:14

标签: ruby-on-rails enums mapping

有一个表Fans,其列idcolor使用枚举,因此{ "blue": 0, "yellow": 1 }和db只存储整数值。

Fan.all.map {|fan| fan.attributes}

返回一个散列数组,其中颜色仍为整数形式。如何获取颜色字段映射到文本中的哈希数组?

1 个答案:

答案 0 :(得分:0)

df1 <- df %>% rowwise() %>% do(data.frame(Seller=.$Seller, Buyer=.$Buyer, Qty=.$Qty, DateTimeCurr=seq(from=.$DateTimeFrom, to=.$DateTimeTo, by="hour"))) %>% group_by(Seller, Buyer, DateTimeCurr) %>% summarise(TotalQty=sum(Qty)) %>% mutate(id=paste0("Qty", Seller, Buyer)) cast(df1, DateTimeCurr~ id, value="TotalQty") 会为您提供哈希:Fan.colors

{ "blue": 0, "yellow": 1 }

因此,要获取颜色文本,您可以构建这样的哈希:

my_fan = Fan.find(123)
my_fan[:color] # Returns the integer value of color

这是微不足道的(只是用原始枚举哈希中的值交换键)

然后,当您遍历new_color_hash = { '0': "blue", "1": "yellow" } 属性时,只需调用:

Fan

获取此特定new_color_hash[my_fan[:color].to_s] 实例颜色的文本表示。

这可行,但这不是一个非常好看的实现。