2012/02/16

ストロベリーナイト

原作を読み始めました。(ドラマは見てません)
結構面白い。
短絡的に「推理小説」を思い出しつつ、「マークスの山」が浮かんでます。
まだ、106ページ。
今週で読み終わるかな。

2012/02/15

[Rails]reverse_orderで降順ソート

RailsでActiveRecord::Baseの派生クラスを使ってQueryを実行する際に、
ソートする、のは当たり前にあります。

例えば、 「ユーザ」を現すモデル「User」があって、登録日時でソートする、
という場合は、


  @users = User.order(:created_at)


のように、orderメソッドを実行します。
この例では、created_atの昇順でソートされます。

降順でソートする場合は、どうしますか?
これまで私は、次のように書いていました。


  @users = User.order("created_at desc")


ですが、 reverse_orderという 便利なAPIがあったんですね、これを使えば、シンボルを使えるわけです。
なので、

  @users = User.order(:created_at).reverse_order


というように書けました。
すっきりしました!

2012/01/17

[emacs] scss-mode

Rails3.1から採用されたscssをemacsで読み書きしたい。
ということで、scss-modeを導入しました。

※ scssについては、こちらを。
   http://sass-lang.com/

1. scss-modeの取得
    githubからcloneしました。
    https://github.com/antonj/scss-mode/

2. .emacsの編集

 (add-to-list 'load-path "path/to/scss-mode")
 (require 'scss-mode "scss-mode")
 (add-to-list 'auto-mode-alist '("\\.scss\\'" . scss-mode))

3. emacs再起動
    emacsを再起動します。

2011/06/27

rails3.0で動的ルーティングを実現する。

例えば、

http://devel.com/userA/controllerA/actionA
http://devel.com/userB/controllerA/actionA
http://devel.com/userA/controllerB/actionA
http://devel.com/userB/controllerB/actionA

のようなルーティング(パスの最初のセグメントが動的)をRails3.0で実現するには、
config/routes.rbに、次のような定義を書く。

config/routes.rb
scope "/(:username)" do
  get "controllerA/actionA" => "controllerA#actionA"
  get "controllerB/actionA" => "controllerB#actionB"
end

この「scope」の定義により、

http://devel.com/userA/controllerA/actionA

がリクエストされた場合、コントローラ"controllerA"のアクション"actionA"が実行され、
その際に、params[:username]に"userA"が設定されている。

また、named_helperは、
controllerA_actionA_path(:username)
controllerA_actionA_url(:username)
controllerB_actionA_path(:username)
controllerB_actionA_url(:username)

が生成される。

2011/06/12

バジル

ベランダでバジルを育てています。
陽当たりのよい場所に移してあげたら、葉が増えてきました。
もう少ししたら食べてしまうつもりです。