Ruby on Rails

高度なActiveRecordクエリ

Query interface、where、joins、includes、eager loading、N+1問題、transactions、locking(optimistic/pessimistic)

28 面接問題·
Mid-Level
1

主キーでレコードを取得し、見つからない場合に例外を発生させるActiveRecordのメソッドはどれですか?

回答

findメソッドは主キーでレコードを取得し、レコードが存在しない場合はActiveRecord::RecordNotFound例外を発生させます。これにより、nil値のまま処理を続行するのではなく、コードが明示的に失敗することが保証されます。例外を回避してnilを返したい場合は、find_by(id: value)を使用します。

2

ActiveRecordにおけるfind_byとwhere.firstの主な違いは何ですか?

回答

find_byは単一のレコードまたはnilを直接返しますが、where.firstはActiveRecordのリレーションを返してからfirstを呼び出して最初の結果を取得します。実際には、find_byはLIMIT 1で最適化されたクエリを生成しますが、whereは最初の要素を選択する前により多くのデータを読み込む可能性があります。

3

ActiveRecordのwhereメソッドに複数の条件を渡すにはどうすればよいですか?

回答

whereメソッドは複数のキーを持つハッシュを受け取り、ANDで結合される複数の条件を指定できます。例えば、User.where(status: 'active', role: 'admin')はWHERE status = 'active' AND role = 'admin'を生成します。OR条件には、orまたは生のSQLクエリを使用します。

4

ActiveRecordにおけるN+1問題とは何ですか?

5

関連を事前読み込みしてN+1問題を解決するにはどのメソッドを使用しますか?

+25 面接問題

次の面接に向けてRuby on Railsをマスター

すべての問題、flashcards、技術テスト、コードレビュー演習、面接シミュレーターにアクセス。

無料で始める