RubyAMF を使ってみる

 よりよい家計簿を目指して、RubyAMFを使ってみる。Rails + Flex3.0 でやろうと。

インストール(Rails側)

$ script/plugin install --force http://rubyamf.googlecode.com/svn/trunk/rubyamf/

設定

 インストールすると config/rubyamf_config.rb が出来るので、ここで設定を行う。

無視したいフィールドがあったら、下記のように指定する。

ClassMappings.ignore_fields = ['created_at','created_on','updated_at','updated_on']

ActionScript側で、変数名をキャメルにするかアンスコ区切りにするか。

ClassMappings.translate_case = false

public var created_at:Date;

ClassMappings.translate_case = true

public var createdAt:Date; // created_at in rails

AS側で、動的にRailのモデルと関連づけを出来るようにするか。ARから派生したモデル以外でも使えるみたい。

ClassMappings.assume_types = true

指定は、以下のようにする。
# Flash:: fl.net.registerClassAlias(‘User’,User)
# Flex:: [RemoteClass(alias=’User’)]

ClassMappings.assume_types = false のとき、以下のようにしてRails側とAS側のマッピングをするか。

ClassMappings.register(:actionscript => 'Address', :ruby => 'Address', :type => 'active_record')

とすると、
Ruby側

class Address < ActiveRecord::Base

AS側

[RemoteClass(alias="Address")]
public class Address {

デフォルトだと、ASから送られてくる日付は Time オブジェクトになるが、これを DateTime オブジェクトにするかどうか。true で DateTime, false で Time。

ClassMappings.use_ruby_date_time = true

これを true にすると、associationを eager load してくれるみたいです。false にすると、いちいち設定する必要があります。

ClassMappings.check_for_associations = true

AS側で保存したときに、Rails側でどのように受け取るかの設定。

ParameterMappings.scaffolding = false

として、AS側でsaveしたとき

save(context);

Rails側では、以下のように受け取ります。

def save
  @context = params[0]
ParameterMappings.scaffolding = true

として、AS側でsaveしたとき

save(
   {context:context}
);

Rails側では、以下のように受け取ります。

def save
  @context =
     params[:context]

書きかけ。

RubyAMF を使ってみる