データの取得方法(find)
データベースからデータを取得したい場合は
決められたコードを入力しないと、取得できない、もしくはエラーになる。
find
referencesの使い方。
使用方法
マイグレーションファイル
使用するメリット
- 自動でindexをつけてくれる。
- 勝手にgroup_idを作ってくれる。(referencesの中には本当はgroup_idがっ入っている。なので、〜idの時は基本的に使った方が良い)使わないと、制約などを別でいちいちつけなければいけないため)
注意点
この記述だけでは制約をつけることができないため必ず
をつけるようにする。
syntax error, unexpected tSTRING_BEG, expecting keyword_endの解決方法
結論
「:」を消す。
もしくは「,」をつける。
チャットアプリにフラッシュメッセージを実装する時に起きたエラー。
これを
にすることで解決する。
PendingMigrationErrorの解決方法。
経緯
アプリにサインアップ機能を付け加えるために、
ターミナルで
$ rails g migration AddNameToUser name: string
入力後
applicationcontrollerに
before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) end end
と入力し
rake db:migrateしたら
ターミナルでは
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: Duplicate column name 'name': ALTER TABLE `users` ADD `name` varchar(255)
が表示された。
原因
誤ってマイグレーションファイルを2つ作ってしまったため(一つ最初に作ってたことを忘れていた。)
解決方法
まずは、もう一度rake db:migrateをするが解決できず。
続いては
1,作成したマイグレーションファイルを削除する
2,rake db:migrate:resetをする。
3,rake db:migrateをする。
これでも解決できず。
よく見てみると
`check_pending!': Migrations are pending; run 'bin/rake db:migrate RAILS_ENV=test' to resolve
との記載が、
これは、RAILS_ENV=testが途中になってるよーと教えてくれていることが判明。
ターミナルで
$ rails db:migrate RAILS_ENV=test
をして
rake db:migrateをすれば解決できる。
少しのミスでこんなに時間を喰われるとは。