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種類だけが利用できるみたいだよ。
続きを読む