備忘録的な何か

技術ブログ的な何かです

2013-10-01から1ヶ月間の記事一覧

ActiveRecordのTimeZoneConversionが遅い件 (Rails小ネタ)

ActiveRecordでレコードを取得する場合、以下の様なコードを書いたとする。 Article.where(cond).map{|record| #condは検索条件 record.attributes.each{|name,value| #hoge } } この処理はレコード数が多い場合に非常に遅い。その理由は、record.attributes…

Rubyのnilの挙動を利用する

皆さんご存知の通り、RubyはnilはNilClassのオブジェクトである。 NilClass.instance_methods(false).sortとしてみると、結構な関数が定義されている。 => [:&, :^, :inspect, :nil?, :rationalize, :to_a, :to_c, :to_f, :to_h, :to_i, :to_r, :to_s, :|] #…

ActiveRecordで複数条件のorクエリまたはinクエリを投げる(Rails小ネタ)

ActiveRecordでor検索をしようと思うと、意外と簡単にはできない。 Table.where(id: 1).or(id: 2) とかでできそうなものだができない。 真面目にやるには、Arelを使ってやるのが一番のようだ。 http://techracho.bpsinc.jp/tsunekawa/2013_05_24/8502 非常に…

compactしないで、nilを含む配列からnilではない最初の要素を取得する方法

表題どおり。 arr = [nil,"hoge","fuga"]という配列があり、nilではない最初の要素を取得したい場合、私は以下のようにしていた。 arr.compact.first #=>"hoge" コードゴルフ的に言えば18byteなので、あまりいただけない。(firstではなく、[0]でアクセスする…