18:34:37">特に難しいことはしていない。ここは至ってシンプル。?)とかの部分はなんかエスケープしてるんだろうくらいの雰囲気で流している。続いてTweetの作成。18:35:22">なるほど、一度Userの情報を探している。ちなみに、createの際にuser_idを指定しなかったり、usersテーブルのidに存在しない値を指定すると、失敗し、rollbackする。18:35:29">]>なるほど、かってにuserテーブルのidをtweetテーブルのuser_idに変換してwhereの条件をかけているわけか。これはー多分最初にtを作成したときにuser_idを指定していて、そのときにuserの情報がloadされていたので、それを利用しているぽい。SQLの中身がわかってちゃんと落ち着いて読めばそんなに対してことやってないってことがわかった。userテーブルのidをtweetテーブルのuser_idに変換するとか、名前で制約をつけていることが多くて、そこ離れるまでは大変そうだと思ったよ。referenceを理解するこれと同じことをreferencesを使ってやってみる。調べたところ、さっき自分がやっていたことはとんでもないウンコマンなことだった。db:migrateuserという名前の型がreferencesというわけだ。先程までのエラーは、referencesというカラムをuserという型で定義しようとしていたために発生したエラーだったのだった。笑モデルのクラスのファイルを見てみる。consoleで確認。14:01:54">irb(main):019:0>userからtweetを取得するのができない。tweetと定義していないからだ。userなので、tweetからuserを取得することはできる。:tweetsendと、has_manyを追加する必要がある。ところで、型をreferencesとして定義するメリットは何なんだろう?確かに、belongs_toは自動で書いてくれたけど、結局has_manyを自分で書かないといけないんだったら、そんなに旨味はないように感じるのだが。外部キーをreferences型カラムで保存するによると、references型はbelongs_toと同じ意味だと。references型でテーブル定義をすると、hoge_idというように"_id"をつけなくてもいいらしい。:ownerが自動で追加されます。使えるなら、いちいち手動で設定するよりもこちらのコマンドを使うよにしてください。この記事のニュアンスだと、別にreferences使わないとだめってことはないみたい。別にreferencesじゃなくてもいいのか、ただreferences使ったほうがちょっと便利でラクできるよ!ってことらしい。いう理解にしておいて先に進もう。最後にdb/schema.rbだけは確認しておきたい。referencesを使ってmigrationファイルを作成した場合。endendなるほど、tweetテーブル側でuser_idにindex的なものがあるなぁ。しまった、sqlのindexについての知識が乏しい。なんか早くなるっぽいくらいの認識しかない。保留にして、referencesじゃなくて、それぞれ別のものとしてuserテーブルとtweetテーブルを作ったものを見てみる。endendうーむ、tweetsテーブルのuser_idはusersテーブルとは無関係のように見えるな。これは適当だがreferencesを使ったほうがindex的なものを使うからテーブル感のリレーションを使いたいときには高速。的なことがありそうな気がしてきた。そんなゴリゴリにsqlチューニングする必要ある勢じゃないから、いいや、気にしない。タイムカプセルに入れておこう。気になってteratailにアカウント作って質問の文章を書いている最中にダメ押しでもう少し調べてみたら、多分理解した。railsのindexとforeign_keyについておしえてください。(63406)|teratailやっぱり普通にindexを使っているんですね。indexも概念は理解しました。sqlのindexの説明で「複製」とかっていう単語を使っていたので、腑に落ちていなかったが、どうやらこういうことらしい。あるのでindexが不要だと思ったのですが。いう質問に対してたとえば、ユーザーのデータが数百万件を超えるような膨大な数になったとしましょう。その中から、「メールアドレスがhoge@example.comのデータを探す」となれば、インデックスがない場合だと「全部のデータを当たって、一致するメールアドレスを探す」という処理が必要になります。インデックスでは「B木」のような完全に同一のデータ、あるいはデータ範囲を検索しやすいような特殊な構造でデータを入れてあるので、メールアドレスが一致するデータを、全探索より遥かに高速に引き出すことができます。railsのindexとforeign_keyについておしえてください。(63406)|teratailなるほど、普通に複製するだけじゃなくて、B木とかの検索しやすいデータ構造にしておくのか。いやーCS力足りないなぁ。いうことは、結局テーブル同士のリレーションは結構な数の呼び出しが起こりそうな気がしているので、indexを貼ってくれているrefernces型を使うのがbetterという結論でよろしいですかね。タイムトライアル始めます。install...2018-07-20railsのactiverecordでlastの一つ手前を取得したい。secondの逆をやりたい。ユーザーのtweet...2018-07-12twitter分析アプリ作成1railsにて実装。グラフの描画はchart.jsを使用。読者になる検索リンクはてなブログブログをはじめる週刊はてなブログはてなブログPro最新記事nginxのプロセスとかワーカとかスレッドとかについてよくわからないので整理する備忘録AWSの多要素認証まわりを整える競技プログラミングのテストケース実行環境を用意しようとしてハマったpythonではじめるソフトウェアアーキテクチャ読書メモ3pythonではじめるソフトウェアアーキテクチャ読書メモ2月別アーカイブはてなブログをはじめよう!benzenetarouさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。