高瀬です。
Railsで開発してる 人は一部の例外(RubyでActiveRecordを使わないでDBに接続する方法)を除いてactiverecord(AR)で
DBを検索すると思います。
 
今回はARでDBの検索をする際に綺麗に書けるようになるtipsです。

1.conditions句をシンボル使ってDRYに書く

conditions句って実はシンボル使えるらしいのです。

最近まで知りませんでした。

というわけで、?だと

:conditions =>["(prefecture_id = ? and user_id = ?)  or (other_prefecture_id = ? and other_user_id = ?)",  11, 2, 11, 2]

 と、分けわかんなくなっちゃう様な検索文を

:conditions =>["(prefecture_id = :prefecture_id and user_id = :user_id)  or (other_prefecture_id = :prefecture_id and other_user_id = :user_id)", {:prefecture_id => 11, :user_id => 2}]

っていう書き方ができます。

 

2.ヘルパつかってみる。 

こんなライブラリとかをつかいます。

module ActiveRecordHelper
def flatten_conditions(conditions, op = "and")
return nil if conditions.empty?
ps = []
condition = conditions.collect do |c|
next if c.size < 1
ps += c[1..(c.size)]
"( #{c[0]} )"
end.delete_if { |c| c.blank? }.join(" #{op} ")
[condition, ps].flatten unless condition.empty? end
end

class ActiveRecord::Base
include ActiveRecordHelper
end

 

そーすると

 

@condition = []

@condition << [" prefecture_id = ? ", params[:prefecture] ] if params[:prefecture]

@condition << [" sex = ? ", params[:sex] ] if params[:sex]

  @users = User.find(:all, :conditions => @conidition)

こういう風に、配列にガシガシ追加するだけーという検索条件の追加の仕方ができます。

コメント (0)  |トラックバック (1)

ブックマークに追加する

トラックバック URL

トラックバック一覧

[ruby][rails_tips][rails]ActiveRecordで最近知ったtipsとか
ActiveRecordのconditionsを綺麗に書くTips2つ(doruby)に書いてみた。 以前書いたActiveRecordでパラメータでconditions条件を追加しやすいヘルパ と... [続きを読む] posted from zenpouの日記 2008.02.16 12:27
この記事にコメントをする
ニックネーム:
メールアドレス:
URL:


.
web開発ならKBMJ
Rubyでのwebシステム開発は
実績豊富なKBMJにお任せ下さい
iPhone開発
iPhone開発は
KBMJにお任せ下さい
ファイル共有サービス DUB
クラウドファイル共有サービス「DUB」
オープンソースECパッケージ エレコマ
オープンソースECパッケージ
「エレコマ」

プロフィール

zenpou
zenpou
1. 名前: たかせゆういち
2. blog: http://d.hatena.ne.jp/zenpou
3. 年齢: 24くらい

Railsについて

1. KBMJでRailsの開発をやっています。
2. 小江戸らぐというユーザーグループで、毎月Railsの勉強会の講師をしています。。

開発環境とか

1. Windows Vista(ノート) と Windows XP(デスクトップ)を2台並べてます。(synergyで連動)
2. でも、実際に開発する場合、ネットに繋がってたらLinuxにPuttyで接続して開発。
3. ネットに繋がってない場所だと、ローカルのcoLinux上にPuttyで接続して開発。
4. 開発に使うLinuxは、ディストリは余り気にしないけど、debianとCentOSとFedora。
5. Linux上でzsh + screen で開発します。screenで画面切り替えながらログをtail -fしたり、ruby script/consoleしたり、mysqlしたり。
6. エディタはvim使ってます。

最近チェックした記事

最新記事

アーカイブ

アクセスランキング

KBMJのWebソリューション
Ruby on railsの開発ならKBMJ
株式会社ケイビーエムジェイ