更改Ruby on Rails脚手架顺序

时间:2016-05-03 21:28:44

标签: ruby-on-rails ruby scaffolding

我有一个Ruby on Rails应用程序,我想在Heroku上部署它。出现一些错误,我认为这是因为脚手架顺序。

由此,我的意思是首先创建一个名为submissions的类,但是这个类引用了另一个名为Users的类,该类尚未创建。

这是执行rake db:migrate http://pastebin.com/R83a3rsN

时出现的错误

这些是迁移文件及其文件名

我想你的意思是:

20160503205437_create_submissions

http://pastebin.com/ig5nHjsj

http://pastebin.com/q2jABiep表示20160428101834_create_users

3 个答案:

答案 0 :(得分:2)

您的db / migrate文件夹中有一个名为...

的成员

20160503205437_create_submissions.db

将其重命名为

/** * QUICKFIX */ angular .module('helloTesterApp', ['helloService']) .controller('HelloController', HelloController); HelloController.$inject = ['HelloService', '$scope']; function HelloController(HelloService, $scope) { ... // insert controller's code here }

将其移至迁移列表的底部,并且它将在最后执行。

答案 1 :(得分:0)

这似乎不像支架错误本身。相反,它是迁移的问题(支架恰好生成)。

为了解决这个问题,我可能只是进行一次新的迁移,其中包括您的应用程序此时所需的所有列。然后编辑create_table块的顺序以解决您的错误。

然后您就可以删除其他迁移文件并运行dB:create或reset。

答案 2 :(得分:0)

这是迁移中的交叉依赖性问题。在这种情况下,Users表期望Users表已存在,以便为其声明外键。

考虑在迁移中声明Submissions表上方的with open(current_class, 'r') as f: studentList = [float(line) for line in f.readlines()] for score in reversed(sorted(studentList)): print(score) 表。