我正在尝试为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
答案 0 :(得分:0)
--parent选项假定您已经为单表继承设置了所有设置,即父类有一个带有类型列的表(或者您正在使用的任何列)。
由于模型将存储在父表中,因此无需为子类创建新表,因此无需迁移
我得到的答案类似于某人提出的这个问题。
答案 1 :(得分:0)
据我了解,你走错了路。在单表继承中,所有属性必须存在于父模型表中,并具有附加列名称' type'表示继承模型的类型。列名称'类型'可以使用适当的设置进行更改,但默认情况下ActiveRecord会查找' type'柱。你得到了'UnknownAttributeError'错误导致父模型在其表中没有以下列。您需要编写迁移以添加新列。希望您了解STI的概念。为了进一步探索,我将为您提供官方指南的链接。希望你的问题能够得到解决。 http://edgeguides.rubyonrails.org/association_basics.html#single-table-inheritance