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) が ありません

どうやらデータベースに列のようなものがあったようですが、奇妙な厄介な方法で修正されました。

PS このテーブルに関連するフィクスチャを無効にすると、すべて問題ありません。

何が起こっているのか、レールはこの列名をどこから読み取るのか、どうやらそれは私のワークスペースからではなく、私のデータベースでもテストデータベースでもないため、おそらくどこかに保存されているのでしょうか? この混乱を解決する方法はありますか?

4

1 に答える 1

1

それから1分後、SOで尋ねると、何時間も前に何もなくなった後、自分で答えを見つけました。これはいつも私に起こります。

答えは、Rubyman がコメントしたとおりです。従来の情報を削除するには、フィクスチャを変更する必要があります。しかし、それはもう少し微妙でした-ワークスペースになかったので、フィクスチャのどこにも「user_id」列/文字列がありませんでした。しかし、'belongs_to' と 'has_many' を使用しているため、モデルでは 'user_id' という名前ではなく、どこでも 'user' という名前になります。そのため、フィクスチャで「user」フィールドを検索して見つけ、SQL で生成された誤った「user_id」列名を修正するために、それを削除する必要がありました。

これが誰かに役立つことを願っています。

于 2013-02-22T13:17:03.597 に答える