第9回Rails勉強会@東北

今回も参加しました。
今回のセッションは3つ。

以上でした。

jMaki

jMakiですが、ちょっとだけわかった気はするのですが、
やっぱりjavascriptを読みたい気がしました。理解が浅かったです。
すみません。どうなんだろ。主流になったらやりますけど。
現状はうーむ。

日程調整アプリ

今回は結構進めましたね。よかったのではないでしょうか。
ただ、これでブログを書いている人が本家を追い越してしまったのは笑った。w

RubyActiveSupport

私が進めたので、深く書きます。
まず、スライドですが、slideshareにあげました。
ただ、9枚しかないですし、解説はトークだったので深くはありません。
id:monyakataさんは楽しかったと言っていますが、
本人は楽しかったけど、hmoriさんとquintiaさんの質問と解答にタジタジでした。
やっていて印象的だったのが

def name=(str)
  @name=str
end

hmori:のname=の=ってなんですか?
メソッド名の一部ですよ
hmori:えーまじ!キモー!!

class UsersController < ActionController
  in_place_edit_for :user,:name
end

rubyはクラスを定義した時にクラスメソッドを実行することが出来て、
このin_place_edit_forはクラスメソッドなんですよ。
quintia:うわー!そうだったのかー。
でした。さらに掘り進めると、

def in_place_edit_for(object, attribute, options = {})
  define_method("set_#{object}_#{attribute}") do
    @item = object.to_s.camelize.constantize.find(params[:id])
    @item.update_attribute(attribute, params[:value])
    render :text => @item.send(attribute).to_s
  end
end

とin_place_edit_forは定義されていて、この中で上の例だと
define_methodによってset_user_nameというメソッドが動的に定義されます。
これにより、postを受けることができるというわけです。
define_methodは次回もやりましょう。

次回以降は

あたりをやって行こうと思います。シリーズになりそうですね。

さらにメモ

  • クラスメソッドをmix-inする方法