You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
users = User.find_by_sql(['select * from users where id = ?', 1]) puts users.class.name => "Array" puts users.first.class.name => "User" puts users.first.id => 1 # 名前付きプレースホルダバージョン users = User.find_by_sql(['select * from users where id = :id', {id: 1}]) find_by_sql以外の方法 find_by_sql以外の方法もついでに紹介。 ActiveRecord::Base.connection.select_all 返り値はActiveRecord::Result、各要素はHashになっておりドットアクセスができない。プレースホルダーもA
Railsで使用する生SQL Railsにおいて、ActiveRecordのwhere等では表現できない複雑なクエリを使用してDBのデータを取得する場合、生でSQLを書く必要が出てくると思います。 しかし、AcitiveRecordで生sqlを実行するメソッドは数多くあり、用途によってどれを使用すべきか分からないという方もいるのではないでしょうか。 そこで今回はよく使用されるであろう、execute/select_all/find_by_sqlについて、どのように呼び出すのか、戻り値はなにか、どのような用途で使用すべきかについて説明します。 先に結論を書いておくと execute -> クエリの実行 select_all -> セレクト文の結果取得 find_by_sql -> ActiveRecordオブジェクトの取得 となります。詳しくは以下ご覧ください 環境 Rails 5.2.3
概要 Railsを開発する上でパフォーマンスを低下させないためのTipsをメモ Tips 実行時間の大きい処理はJobで非同期実行する リクエスト内で複数な処理を実行してしまうと、レスポンスが遅くなりユーザビリティの低下につながります リクエスト内で実行する必要がないものは、ActiveJob等で非同期に実効するか、バッチ処理で定期的に処理するように することでユーザビリティの向上が図れます 条件式判定よりもSQLで絞る 取得してきたデータを1件ずつ条件反映して処理をするよりは、 取得するデータそのものをSQLで絞る方がはるかにパフォーマンスが良くなります ループの中で毎回条件式で反映してしまうと、ループの中で毎回SQLが走ってしまうこともあるので、 パフォーマンスが要求される場合はSQLで絞るか、SQLで絞れる設計にすることをおすすめします Array よりも ActiveRecord:
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く