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

ActiveRecordのrewhereメソッド

ちょっとどのような状況で使うのか、まだピンと来ないけどActiveRecordにはrewhereっていうメソッドがある。 これを使うと前に宣言していたwhere条件をoverrideすることができる。 #rewhereを使ってもその前にpointっていうカラムで条件指定してないからover…

ActiveRecordのmergeメソッドについて

ActiveRecordでテーブルのjoinをする場合以下のように書くと思います。 User.joins(:auth_providers).all.where(auth_providers: { provider: 'facebook' }) 発行されるSQLは次のようになります。 SELECT "users".* FROM "users" INNER JOIN "auth_providers…

rubyでメソッドの処理速度をはかるとき

rubyで処理速度をはかる時は以下のようにbenchmarkモジュールを使います。 で、この前Railsのコミットログを眺めていたら、gsubメソッドをtrに置き換えたというのがあったので、 試しに以下のように処理の計測を行ってみました。 require 'benchmark' hoge =…

RailsとJavascriptの連携

RailsアプリケーションとJavascriptの連携をしたい場合、[gon](https://github.com/gazay/gon)というgemがあります。これを使うとcontroller内でセットした変数をJavascript(rails3以上だとcoffeescriptを使うケースが殆どだと思いますが)内で使う事ができ…

Railsの静的解析ツール

現在業務で使っている解析ツールはrubocopだけだけど、他にも面白いツールがあったのでメモ。まずはrails_best_practices。これはrailsのコードを解析して、よろしくないものを教えてくれます。なかなか良い。rubocopはコーディングチェックなのでrubyとして…

Rails4のJoinについて -> [訂正]includesメソッドでした

Railsでincludesメソッドを使ってjoinする場合はActiveRecordのjoinsメソッドを使います。 User.includes(:photos) で絞り込み条件がある場合は、例えば以下みたいに記述します。 now = Time.zone.now.at_beginning_of_day User.includes(:photos)where(phot…

Railsのsaveメソッドでtrue/falseでなくオブジェクトを返したい場合

通常の場合ActiveRecordのsaveメソッドの戻り値はtrue/falseですが、そうでなく更新結果のオブジェクトを返したい場合以下のように記述するとできます user = User.find(1) user.tap(&:save)

Rails4.2から追加されるActiveJobについて

rails4.2のbeta2が出ましたね。 以前かいたActiveJobについて、修正があったので改めて記事を書きました。ActiveJobとはRails4.2から追加された仕組みで、delayed_jobやresqueなどのキューイングを行うgemを同じインターフェースで使えるようにしたものです…