よりよい家計簿を目指して、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]
書きかけ。