0

在 0.074964 秒、13.3398 次测试/秒、0.0000 次断言/秒内完成测试。

  1) Error:
test_the_truth(UserTest):
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'user_id' in 'field list': INSERT INTO `tickets` (`status`, `assignee`, `created_at`, `updated_at`, `id`, `project_id`, `user_id`) VALUES ('MyString', 1, '2013-02-22 12:40:19', '2013-02-22 12:40:19', 980190962, 64810937, 64810937)
    /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:245:in `query'
    /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:245:in `block in execute'

我生成/搭建模型和一切。特殊的部分是我不记得表中有一个 user_id 列。此外,schema.db 和所有迁移也没有这样的东西。我的工作区中没有这样的字符串(user_id) rails 我的列应该如何命名?

显然,数据库中有一个列这样的东西,但它以某种奇怪的混乱方式得到了修复。

PS 如果我禁用与此表相关的固定装置,一切都很好。

发生了什么事,rails 从哪里读取这个列名,因为它显然不是来自我的工作区,也不是来自我的数据库或测试数据库。所以它可能将它存储在某个地方?有没有办法解决这个烂摊子?

4

1 回答 1

1

一分钟后,我在 SO 中提问,我自己找到了答案,几个小时前一无所获。这总是发生在我身上。

答案正是 Rubyman 所评论的——应该修改固定装置以删除任何遗留信息!但它有点微妙 - 我的灯具中确实没有'user_id'列/字符串,因为我的工作区中没有它。但是,当我使用“belongs_to”和“has_many”时,它不会在模型和任何地方命名为“user_id”,它只会被命名为“user”。因此,我在夹具中搜索并找到了一个“用户”字段,必须将其删除以修复 SQL 中生成的错误“用户 ID”列名。

希望这可以帮助某人。

于 2013-02-22T13:17:03.597 回答