rails mountable engine - SQLite3 :: SQLException:没有这样的表

时间:2018-03-16 00:32:33

标签: ruby-on-rails sqlite rails-engines nested-resources

我正在关注Rails Guide Getting Started with Engines。唯一不同的是我使用的是RubyMine IDE。我使用的是ruby 2.5.0和rails 5.1.5。

一切顺利,直到我达到第4部分,然后进入应用程序。"在进入应用程序之前,我想测试一切都很顺利。我尝试使用引擎视图和rails控制台创建一些文章和评论。我可以创作文章。但我无法创建评论。我收到错误:

SQLite3::SQLException: no such table: main.articles: INSERT INTO "blorgh_comments" ("article_id", "text", "created_at", "updated_at") VALUES (?, ?, ?, ?)

我在DB浏览器中为SQLite打开了test / dummy / db / development.sqlite3数据库,我确实有一个名为" blorgh_comments"的表。

我猜这个"没有这样的表"错误是某种"下游错误",即由于某些其他(未命名的)错误,rails无法访问该表。

我根据指南,嵌套资源,视图和部分设置了迁移。我检查了"特殊文件"在指南中提到它们都有所需的代码(我不需要改变任何东西)。

所以我想问题是,什么样的"底层"错误可能会触发此错误?

感谢任何帮助。

================编辑=================

引擎现在正在运行,我认为我知道原因:

指南告诉我用一个整数类型的article_id创建一个注释模型(显然是对父文章的引用),如下所示:

rails g Comment article_id:integer text:text

而不是这样做,我创建了这样的模型:

rails g Comment article:references text:text

我无法创建评论,如上面的问题中所述。当我"重构"应用程序并按照指南中的说明创建了迁移,它起作用了。

因此,我假设生成rails引擎的代码无法识别和/或正确处理 t.references 指令。具体来说,我怀疑它试图在变更方法(迁移)中而不是在它之后创建索引(就像在StackOverflow上的许多其他问题/类似性质的解决方案一样)。如果我是正确的,我认为这有资格作为rails引擎实现中的一个错误,但是,我不会这样报告,因为我没有足够的经验知道是否真的如此。

========================另一个编辑=====================

我发现@ Igor-Belo的这个StackOverflow answer说它是一个名称间距问题。我可以使用t.references指令但仍需要编辑迁移以正确设置外键索引。

0 个答案:

没有答案