2017-12-06 52 views
1

SQLite 데이터베이스에 다른 테이블을 만들었지 만, 불행하게도 레일 콘솔을 통해 테이블에 액세스 할 수 없습니다. GUI를 통해 한 행의 데이터를 추가하고 SQLite에 대한 액세스를 시도하고 있는데 오류가 발생합니다. "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 "user_information"'vs''create_table'은 단일화 된 버전을 사용하지만 레일스 (기본적으로)는 복수형으로 테이블의 이름을 계산합니다. 'UserInformation' 모델 (권장하지 않음)에서 테이블의 이름을 수동으로 설정하거나 이전 테이블을'create_table "user_informations"'(!!!)로 바꿀 수 있습니다. 그러면이 테이블의 기존 데이터가 모두 삭제됩니다 기존 데이터를 유지하려는 경우 테이블의 이름을 바꾸는 새로운 마이그레이션) – MrYoshiji

답변

2

해결되었습니다. 대답은 항상 테이블을 복수로 명명하므로 내 테이블을 "user_information"에서 "user_informations"로 이름을 바꾸는 마이그레이션을 추가 한 것입니다. 이제 작동합니다!