あなたのクラスは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">