0

モデル内のアクセサーを反復することは可能ですか?

次のようなモデルがあります。

class Account < User
  #Required fields
  attr_accessor :email, :first_name, :last_name, :organizations
end

次のようなJSONが返されます

@name : email
@value : nick@nick.com

@name : first_name
@value : nick

次のようなコードがたくさんあります。

 unless(item.Field["@name"].to_s.match('E-mail').nil?)
    @account_new.email = item.Field["@value"].to_s
  end

  unless(item.Field["@name"].to_s.match('First Name').nil?)
    @account_new.first_name = item.Field["@value"].to_s
  end

これはひどいコードです。モデルのアクセサーを反復処理してアクセサーの名前を取得し、それを使用して JSON オブジェクトのパターン マッチを行い、代入を行うことは可能でしょうか?

.instance_variables.each do |variable| を使ってみた

しかし、思ったようにうまくいかないようです。これを行うより良い方法はありますか?

4

1 に答える 1

0

Rubyでは、次のメッセージを送信して属性を設定できます。

key = item.Field["@name"]
value = item.Field["@value"]
@account_new.send("#{key}=", value) 
于 2012-05-08T17:39:30.347 に答える