タグ

activerecordに関するtohtasのブックマーク (3)

  • ActiveRecord復習その3 - おもしろwebサービス開発日記

    ようやくリレーションについて。 belongs_to, has_one, has_manyの基 今日読んだ範囲では特に新しいことはなかった。 has_and_belongs_to_many has_and_belongs_to_many(habtm)は利用シーンがすごく限られていて、覚えていてもあんまり使えないんじゃないかなーという気がする。結合テーブルを作ったら、そこに情報をいろいろ付加したくなるし、リレーションの片方を検索してそこからもう片方をfindするような時は、結合テーブルに検索情報の列を付加してあげた方がクエリの発行回数が少なくなるし。同様にhas_many :hoge, :through => :hogehgoeもあんまり使いどころがない気がする。 この話題に関してはかなりもやもやしている最中なので、いずれもう少し掘り下げて書きたいと思います。 アソシエーションの拡張 アソ

    ActiveRecord復習その3 - おもしろwebサービス開発日記
  • 並列処理でActiveRecordを使う(ActiveRecord::Base.allow_concurrencyをtrueにする)

    ※ドキュメントを読みながらこんなもんかな?とやってみたやつなので問題あるかもしれません。何かあればコメント頂けると嬉しいです。 例えば、DBからデータを取り出して逐次メールを送信する場合。 よく知られているようにメールの送信はコネクションの確立やSMTPサーバの処理などの待ち時間が長く、逐次処理をしていると無駄が大きすぎる。 処理を並列化して、あるメールの送信待ち時間を他のメールの構築等に充てて無駄をなくすことを試みる。 環境 Ruby 1.8.6 Rails 2.1.0 PostgreSQL 8.3 処理の並列化 Thread.newを使う。単純に実装すればこんなかんじ。 # 未送信のレコードをそれぞれ別々のスレッドで処理するサンプル threads = [] mails = find(:all, :conditions => ["sent = ?", false]) mails.eac

    並列処理でActiveRecordを使う(ActiveRecord::Base.allow_concurrencyをtrueにする)
  • ActiveRecordで遅く検索する(メタボプログラミング) - zenpouの日記

    渡された複数のidで検索する必要がある時、 @users = User.find(params[:ids].split(/,/)) で検索しちゃ駄目だよ!早くなっちゃうからね! @users = [] params[:ids].split(/,/).each do |id| @users << User.find(id) end って検索しようね!idの数だけ検索して、100パラメータ渡す様な奴だと、 信じられない速度さが出てくれるからね! Userテーブルに関連するDiaryテーブルを検索する時も modelにhas_manyやbelongs_toを定義して @user = User.find(:all, :include => :diaries) って一度に取って来ちゃ駄目だよ!SQLがまとまっちゃう! @diaries @user = User.find(:all) @user.ea

    ActiveRecordで遅く検索する(メタボプログラミング) - zenpouの日記
  • 1