Rails3のモデルで logger すると NameError!

モデルというか ActiveModel::EachValidator を継承したクラス内で呼び出す logger が NameErrorになる。

[ruby]

NameError in XxxxController#xxxxxx

undefined local variable or method `logger' for #

[/ruby]

あれれと思ってぐぐってたら、以下の様な書き方をすれば良さそうなので書いておきます。

[ruby]

Rails.logger.debug "hogehoge"

[/ruby]あとついでに文字列で % を使った sprintf をよく忘れるのでメモ。

[ruby]

"%s-%s-%s 00:00:00"%(arg)

[/ruby]

arg は引数1個しかダメらしいので[]で括るなり。

Rubyのプログラムでsprintfを見る機会がほとんどない理由 - 仙台Rails牛タン社長

あと正規表現のざっくりとした使い方を。

[ruby]

unless date =~ (/^[1|2][0-9]{3}-[0|1][0-9]-[0-3][0-9] 00:00:00.{0,10}$/)

record.errors.add(attr, "は不正な値です。")

end

[/ruby]

イコールニョロです。まあこれらは validator 作ってる時に探した内容です。

主要メタ文字は以下で確認しました。

逆引きRuby - 正規表現(パターンマッチ)

正規表現をWEBで確認できる rubular.com 便利です。

Railsの逆引きが非常に役に立ってるのでRubyの逆引きも買おうかな?(あるかな?探してない)

いやーグーグル先生大活躍。