1

私はこのコードを持っています:

<user> <first_name>Bob</first_name> <last_name>Smith</last_name></user>

このコードをユーザー クラスに変換するにはどうすればよいでしょうか。

class User 
  attr_accessor :first_name, :last_name  
end

私は次のことを試しました:

@user = User.new
@user.from_xml(xml_data)

しかし、エラーが表示されます:from_xmlメソッドがありません。

ruby on railsでxmlをクラスオブジェクトに変換するには?

私を助けてください。

4

2 に答える 2

0

あなたのクラスはActiveRecord;を利用していません。それはただの裸のクラスです。from_xmlモジュールで定義されているを使用する場合はActiveModel、次から継承する必要がありますActiveRecord::Base

class User < ActiveRecord::Base
  attr_accessor :first_name, :last_name  
end

ActiveRecord::Base を使用したくない場合はActiveModel::Serializers::Xml、クラスに含めることができます。ただし、これは AR::Base で定義されている に依存しているattributes=ため、代わりに自分で定義する必要があります。以下は機能しているように見えますが、完全にはテストしていません。

class User
  include ActiveModel::Serializers::Xml

  def attributes=(attrs)
    attrs.each {|name, val| instance_variable_set("@#{name}", val) }
  end
end

user = User.new
user.from_xml('<user> <first_name>Bob</first_name> <last_name>Smith</last_name></user>')
# => #<User:0x3bcc760 @first_name="Bob", @last_name="Smith">
于 2013-04-04T10:34:51.293 に答える
0

Hash.from_xml("some xml") は xml をハッシュに変換します

hash = Hash.from_xml(xml)

ハッシュから、アクティブなレコード機能を実行できます。

于 2013-10-03T07:43:52.943 に答える