タグ

TIPSとActiveRecordに関するclavierのブックマーク (6)

  • Rails ActiveRecordでランダムにレコードを1件取得する

    Rails の ActiveRecord で、MySQL データベースのテーブルから、ランダムにレコードを1件取得するコードを4つの方法で試しました。Rails は便利とはいえ、ActiveRecord が絡む部分でまずい書き方をすると、劇的に動作が遅くなってしまう場合もある。なので、自信がない時は、ちょっと手間がかかりますけどベンチマークを取るようにしてます。 ※ 2015/03/18 1つ目のやり方に欠点がありましたので、追記しました。参考にされる場合は、追記部分も読まれるようお願いいたします。

    Rails ActiveRecordでランダムにレコードを1件取得する
  • Railsアプリつくった - ✘╹◡╹✘

    最近APIサーバ用途でRailsアプリを1個つくったので振り返る。 概要 接続元はiOSやAndroidアプリとか、Webブラウザとか、別のWebアプリケーションとか。1ホストあたり秒間数百リクエスト、平均応答時間10msぐらい。Rails 4.1.0.rc2、Unicorn、Nginxを使ってる。正直Railsは全部入りで重いイメージがあったので何となく平均50ms以内程度であれば良いところだろうと思ってたけど、意外と速い。多分そもそもサーバの性能が良いんだと思う。実装時に気を付けたことは普段の開発と特に変わりない。いつもは大勢でワイワイ開発するものに少し手を加えるということが多いんだけど、今回は珍しく自分一人でつくったから目が行き届いてたのかもしれない。DBへの問合せの効率に気を配るとか、Rubyでの処理の無駄を省くとか、アプリケーションのプロセスに無駄なコードを読み込ませないとか、計

    Railsアプリつくった - ✘╹◡╹✘
  • プライマリキーを使った1:1関連でカラム数の多いテーブルを分割する - Hidden in Plain Sight

    おそらく多くのソーシャル系アプリにあてはまるRailsのプチ・デザインパターン的な話。 ぼくが今やっているEast Meet Eastには、ユーザごとに数多くのプロフィール属性があります。名前、性別、生年月日、郵便番号、職業などなど、カラム数にしてざっと25個。これを、全部ひとつのusersテーブルに詰め込むのは、コードの見通しという観点からも性能の観点からも、あまりよろしくありません。 なぜならば、ユーザ関連の情報を扱う局面としては主に メールアドレスとパスワードなどを使ってログインする(アカウント情報) プロフィール情報で条件を指定してユーザを検索・推薦する(プロフィール情報) という2つの独立性の高いユースケースにわかれるため、ログイン処理をやってるときにはプロフィール情報はいらないし、プロフィールを検索してるときにはメールアドレスやパスワードをロードするのは無駄です。また、開発やデ

    プライマリキーを使った1:1関連でカラム数の多いテーブルを分割する - Hidden in Plain Sight
  • modelクラスの中でのselfの使い方 - Rails つまみぐい

    Ruby on Rails v3.2.11 modelクラスの中でのselfの使い方です。railsのルールというよりはrubyのルールですが、modelの中でselfを使うときに時々不安になるのでメモっておきます。 クラスメソッドとインスタンスメソッド modelクラスの中でメソッドを定義する際に、メソッド名の頭にself.をつけるとクラスメソッド、つけないとインスタンスメソッドになります。 class User < ActiveRecord::Base def hoge #インスタンスメソッド end def self.hoge #クラスメソッド (def User.hoge とやっても同じ意味) end end ちなみに使い分けですが、インスタンスメソッドはそれぞれのインスタンスに対して参照・更新するようなメソッドとして使います。一方クラスメソッドは、modelクラスのレコードを検索

    modelクラスの中でのselfの使い方 - Rails つまみぐい
  • Railsでmodelを更新する前に変更内容を知る方法 - このブログは証明できない。

    Rails 2.1からの機能です。modelと書きましたが、ActiveRecord派生クラスのオブジェクトということです。modelを更新する前に、どのカラムが変更されたか、変更前の値は何か知ることができます。 こんなメソッドが用意されています。 changed?変更されてるかどうか。 changed変更されているattribute名の配列。 changes変更されているattribute名前と値のハッシュ。値は変更前更後の値を配列で。 <attr>_changed?<attr>が変更されているかどうか。 <attr>_was<attr>の変更前の値。偏向されてなかったら元の値。 <attr>_change<attr>の変更前後の値の配列。変更されてなかったらnil。 <attr>_will_change!<attr>を変更することを明示。いつ使うかわからん。 <attr>は、例えばti

  • Rails で十分に活用されていなくてもったいない ActiveRecord::Relation のメソッド TOP 10 - 杉風呂2.0 - A Lifelog -

    2013年12月2日更新: 参照されることが多いので Rails 4 の情報を訳注として追記しました。また、Rails 4 に関する情報は、 WEB+DB PRESS Vol.73 が非常に参考になるので、一読をおすすめします。 この文章は Mitch Crowe 氏のブログより 2012年4月14日の記事を翻訳したものです。 The 10 Most Underused ActiveRecord::Relation Methods http://blog.mitchcrowe.com/blog/2012/04/14/10-most-underused-activerecord-relation-methods/ 昨日は ActiveRecord::Relation のコードに膝まで浸かって、使われているのをこれまで全然見たことがない面白いナゲットを思い出させてくれた。この記事で、十分に活用

    Rails で十分に活用されていなくてもったいない ActiveRecord::Relation のメソッド TOP 10 - 杉風呂2.0 - A Lifelog -
  • 1