せたがやえんじにあぶろぐ

Ruby | Rails | iPhone | Web

Railsでdefault_scope使うときの注意点

Railsが2.3.2以降のバージョンだとActiveRecordの機能でdefault_scopeなるものが使える。

これすごく良いのですが、注意が足らなくてエラーが出たことがあったのでメモ。

default_scopeの使い方としては、

User.where(deleted: 0).order(‘id DESC, name ASC’)


みたいな条件をよく使う場合はuser.rbに

class User < ActiveRecord::Base

  default_scope{ where(deleted: 0).
    order(‘id DESC, name ASC’) }
  
end

とすれば、

@users = User.all

でUserモデルのレコードを引っ張ってくるときに、default_scopeで指定した条件で検索してオブジェクトを生成してくれる素敵な機能。

続きを読む

Rails3以降にremote_function, link_to_remoteを移植してみる

かつてRails2にはremote_functionや、link_to_remoteと言う神メソッドがあった。

Rails2のAjaxライブラリはPrototype.jsが採用されていた。

しかしRails3以降、Prototype.jsはバイバイして神メソッドは使用することが出来ず、

link_to 'タイトル', URL, :remote => true

という、オプションを渡すことでAjax通信をするように変更された。

DOMオブジェクトを書き換える際は、js.erbファイルをrenderし、さらにそのファイル内でコールバックしたdataを指定したIDに挿入という、プログラミング初心者の私には、血尿レベルの意味不明っぷりであった。

本当に使えないのか...?

jQuery用にマッピングしなおせばいいだけじゃないのか...?

私は立ち上がった。

マッピングしたる、マッピングしたるでぇ..!!

と思ったので、link_to_remoteのソースコードjQuery用に書き換えてみたよ。

多分不完全なので、適宜修正が必要かもしれないよ。

Prototype.jsではコールバックに色々利用できたけど、jQuery.ajaxは[success,complete,error]の3種類だけが利用できるみたいだよ。

続きを読む