blog.sowatchasayin

Rails etc.

一度にいろんな条件でFindしたい

パラメータからFindの条件を作る部分をまとめたかった。
普通の条件なら
cond[:パラメータ] = params[:パラメータ]
でぽんぽん追加してあげればいいんだけど、配列でやりたい条件もあった。
そんな時はこれ。

ActiveRecord Query Building with Multiple and Optional Conditions

こんな感じでやりました。案外簡単にできるもんですね。


def create_cond_from_params(params)

cond = []
args = {}

#p1は指定したい
if !params[:p1].blank?
cond << "p1 = :p1"
args[:p1] = params[:p1]
end

# p2、あるかな?
if params[:p2]
cond << 'p2 IS NOT NULL'
end

return [] if cond.blank?

[cond.join(" AND "), args]

end

ぽりぽり

Polymorphic Relationships => Rails Wiki

結構簡単にできる。べんり~
でもこういうときはインターフェースが欲しいっす。それっぽいことは出来るんだろうけど。。

追記
できた。Polymorphicにくっつけたクラスのゲッターで、それを拡張してあげればOK。aliasとclass << くっつけたクラス で。
しかし、何かイボーな気配がする。

Vimでコメントアウト

毎回忘れる。

viでコメントアウトする方法

ついでにGVimなのでタブを使ってみた。
vim 7.0 の新機能
すっばらしー

:tabe → :E とするとvimから出ないで色々開けるので便利。

こーるばっく

All about Rails Disabling callbacks in an ActiveRecord data migration

Observer for model with polymorphic relations caused error which says "stack level too deep". solved.

SVNちがい

VMware上のdebianにsambaを導入して、xpのtortoiseSVNで変更を試みたら…
subversionクライアントのバージョンが違うとかいって怒られた。
svn: このクライアントは、作業コピー '.' を扱うには古すぎます。もっと新しい Subversion クライアントをダウンロードしてください。
下を使ったら治ったよ。


「This
client is too old to work with working copy
'...'(...作業コピーに対して、このクライアントは古すぎます)」というエラーメッセージが表示されました。Subversionをアップグレー
ドすることなく、これを解決したいんですが。


$ python change-svn-wc-format.py #{ローカルコピーのパス} 1.4


Ruby on Rails/ActiveRecord::Observer - アークウェブシステム開発SandBox

砂箱。

script/consoleのオプション一覧

とりあえずsandboxにしといたほうがいいっぽい。

Xiaobo On Rails: Rails irb or script/console tips in one glimpse

Author

Fujimura Daisuke
http://fujimuradaisuke.com

Labels