Rails 5.1.2 - 单表继承:没有生成迁移

时间:2017-07-22 13:24:08

标签: postgresql ruby-on-rails-5 single-table-inheritance

我正在尝试为STI实现生成脚手架。我发布以下内容。

rails g scaffold user1 type name email

rails g scaffold member company subscription --parent user1

除了迁移文件我的'成员'模型之外,每件事都生成文件。
当我尝试创建像这样的成员记录时

Member.create(name: "My Name", email: "myname@example.com", 
              company: 'Example LLC', subscription: 'Monthly Gold' )

我收到此错误:

  

ActiveModel :: UnknownAttributeError:成员的未知属性“公司”。来自(irb):1

有关正在发生的事情的任何想法?

我使用rails 5而db是postgres

2 个答案:

答案 0 :(得分:0)

--parent选项假定您已经为单表继承设置了所有设置,即父类有一个带有类型列的表(或者您正在使用的任何列)。

由于模型将存储在父表中,因此无需为子类创建新表,因此无需迁移

我得到的答案类似于某人提出的这个问题。

答案 1 :(得分:0)

据我了解,你走错了路。在单表继承中,所有属性必须存在于父模型表中,并具有附加列名称' type'表示继承模型的类型。列名称'类型'可以使用适当的设置进行更改,但默认情况下ActiveRecord会查找' type'柱。你得到了'UnknownAttributeError'错误导致父模型在其表中没有以下列。您需要编写迁移以添加新列。希望您了解STI的概念。为了进一步探索,我将为您提供官方指南的链接。希望你的问题能够得到解决。 http://edgeguides.rubyonrails.org/association_basics.html#single-table-inheritance