rails test error:" table projectname_test.destroys不存在"

时间:2014-07-02 09:07:05

标签: ruby-on-rails testing rails-activerecord destroy

我刚开始学习Ruby on Rails。当我使用rails进行测试时,出现错误: UserTest#test_the_truth: ActiveRecord :: StatementInvalid:Mysql2 :: Error:Table' eula_test.destroys'不存在:从destroys显示完整的字段 我不知道什么是eula_test.destroys,我该如何解决这个问题。

3 个答案:

答案 0 :(得分:0)

检查您的迁移文件。在db / migrate.rb和db / schema.rb上,您可以查看是否有该表。

答案 1 :(得分:0)

似乎没有人能够回答这个问题,但最好根据你得到的错误进行猜测,看起来你需要一个联接表,因为你很可能有一个" has_and_belongs_to_many"你的模型中的指令eula.rb和test.rb

所以你需要创建一个迁移:rails g migration CreateEulaTest

然后编辑迁移以包含一个索引,该索引告诉db在eula_test表中查找要加入的数据。

您需要使用以下内容编辑迁移:

 def up 
  create_table :eula_test, :id => false do |t|
   t.integer :eula_id 
   t.integer :test_id 
 end
 add_index(:eula_test, [:eula_id, :test_id]
end
 def down
  drop_table :eula_test
 end
end

注意:此表格不需要它自己的ID,因此:id =>假 此外,add_index部分是两个模型之间的外键,它允许数据库知道您正在通过表来建立您的指令,例如create和destroy等。

运行rails db:migrate for rails 5或更高版本,rake db:migrate< 5

您可能需要检查模型以确保拥有正确的has_to_and_belongs_to_many设置。

很可能你错过了本教程的这一部分。有些教程无法解释为什么要做的事情,他们只是向您展示代码并让您弄明白。

答案 2 :(得分:0)

ERROR in app: Exception on / [GET] Traceback (most recent call last): File "MY DIRECTORY\app.py", line 2447, in wsgi_app response = self.full_dispatch_request() File "MY DIRECTORY\app.py", line 1952, in full_dispatch_request rv = self.handle_user_exception(e) File "MY DIRECTORY\app.py", line 1821, in handle_user_exception reraise(exc_type, exc_value, tb) File "MY DIRECTORY\_compat.py", line 39, in reraise raise value File "MY DIRECTORY\app.py", line 1950, in full_dispatch_request rv = self.dispatch_request() File "MY DIRECTORY\app.py", line 1936, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "MY FLASK APP FILE\app.py", line 16, in index cursor = mydb.cursor() File "MY FLASK APP FILE\lib\site-packages\mysql\connector\connection.py", line 1022, in cursor self.handle_unread_result() File "MY FLASK APP FILE\lib\site-packages\mysql\connector\connection.py", line 1286, in handle_unread_result raise errors.InternalError("Unread result found") mysql.connector.errors.InternalError: Unread result found 应该修复它:)