ActiveRecord枚举返回nil,即使它有值

时间:2014-11-17 19:06:15

标签: ruby-on-rails ruby activerecord enums

我有一个枚举,它有一个存储值,但是getter返回nil。

我有以下代码:

class Property < ActiveRecord::Base
  enum building_type:   [
    :none_building_type, :pre_war_low_rise, :pre_war_mid_rise,
    :pre_war_high_rise, :post_war_low_rise, :post_war_mid_rise,
    :post_war_high_rise, :pre_war_loft, :post_war_loft, :pre_war_hotel,
    :post_war_hotel
  ]

如果我在控制台中执行以下操作:

Property.last

我得到了

Property Load (0.8ms)  SELECT  "properties".* FROM "properties"   ORDER BY "properties"."id" DESC LIMIT 1
 => #<Property id: 3, created_at: "2014-11-17 15:39:34", updated_at: "2014-11-17 16:28:48", name: "PropertyName", property_type: 1, description: "adsdsaads", building_type: "4">

但如果我这样做

Property.last.building_type

我得到了

 Property Load (0.5ms)  SELECT  "properties".* FROM "properties"   ORDER BY "properties"."id" DESC LIMIT 1
 => nil 

1 个答案:

答案 0 :(得分:9)

building_type的数据库条目的字段类型看起来像是一个字符串,而不是整数(根据documents enum映射到的整数。尝试更改数据库架构,它应该工作。