2017-12-06 34 views
1

SQLiteデータベースで別のテーブルを作成しましたが、残念ながらレールコンソールからアクセスできません。私はGUI(SQLite用のDBブラウザ)を使って1行のデータを追加しましたが、現在はアクセスしようとしていますが、エラー "ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:そのようなテーブルはありません:"ruby​​(5)on rails - SQLite3 :: SQLException:そのようなテーブルがありません

私のスキーマでは、私はすでにそれを見ることができます:

create_table "user_information", force: :cascade do |t| 
t.string "charity_name", limit: 100 
t.string "res_exp_contact_name", limit: 50 
t.string "res_exp_contact_email", limit: 100, default: "", null: false 
t.string "grants_contact_name", limit: 50 
t.string "grants_contact_email", limit: 100, default: "", null: false 
t.boolean "submission_status_res_exp" 
t.integer "submission_status_grants" 
t.string "category" 
t.string "username" 
t.datetime "created_at", null: false 
t.datetime "updated_at", null: false 
t.string "password_digest" 
t.index ["username"], name: "index_user_information_on_username" 
end 

これは、端末がどのように見えるかです:

ck$ rails console 
Running via Spring preloader in process 8442 
Loading development environment (Rails 5.1.4) 
Cannot read termcap database; 
using dumb terminal settings. 
irb(main):001:0> user = UserInformation.first 
    UserInformation Load (0.2ms) SELECT "user_informations".* FROM 
    "user_informations" ORDER BY "user_informations"."id" ASC LIMIT ? 
[["LIMIT", 1]] 
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: 
user_informations: SELECT "user_informations".* FROM 
"user_informations" ORDER BY "user_informations"."id" ASC LIMIT ? 
    from (irb):1 

誰もがこの解決策を知っていますか?私はどんなヒントにも感謝しています! :-)

+1

'create_table" 'vs' SELECT "user_informations" '=>' create_table'は特異化されたバージョンを使いますが、Railsはデフォルトで複数のテーブル名を計算します。あなたは 'UserInformation'モデル(推奨されません)でテーブルの名前を手動で設定するか、ロールバックして、マイグレーション中のテーブルを' create_table "user_informations" '(!!!これはテーブル内の既存のデータをすべて削除します既存のデータを保持したい場合は、テーブルの名前を変更する新しい移行) – MrYoshiji

答えて

2

解決しました。答えは、あなたは常に複数のテーブルを指定するので、テーブルを "user_information"から "user_informations"にリネームするマイグレーションを追加しました。今それは動作します!

関連する問題