2014-01-12 25 views
1

我有一个Dog模型,可以有很多tags和我的Tag模型有type列。对于type属性我只能选择3种不同类型:如何为种子数据中的模型选择包容性选择选项?

class Tag 
belongs_to :dog 
TYPES = %w(Red Blue Green) 

validates :type, inclusion: { :in => TYPES }, 
        presence: true 
end 

在我的种子文件我有:

tags = Tag.create([ { name: "Red Terrier", type: "Red" } ]) 

我运行rake命令,得到错误:

rake aborted! 
Invalid single-table inheritance type: Red is not a subclass of Tag 

这里发生了什么?有什么办法做到这一点,为什么它认为它是一个子类?

回答

1

你一个bug跑了,因为这是怎么回事在Rails的幕后英寸基本上type是用于ActiveRecord继承,所以具有字段也命名type是搞乱东西

一个可能的解决方案领域:创建一个新的迁移,并且只使用rename_column给予type列不同的名称。

另一个可能的解决方案在这里给出:Rails: Invalid single-table inheritance type error,虽然我个人不知道这样做的含义。

2

不要使用'type'作为列名。它保留在Rails中。重命名它,它会工作