# Half way from re-building an object .... just a little bit of brain

**URL:** <https://www.ruby-forum.com/t/half-way-from-re-building-an-object-just-a-little-bit-of-brain/125389>\
**Category:** Rails\
**Created:** [January 8, 2008, 7:52pm UTC](https://www.ruby-forum.com/t/half-way-from-re-building-an-object-just-a-little-bit-of-brain/125389 "2008-01-08T19:52:22Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Erwin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/a88e57/32.png) [@Erwin](https://www.ruby-forum.com/u/Erwin)\
**Post date:** [January 8, 2008, 7:52pm UTC](https://www.ruby-forum.com/t/half-way-from-re-building-an-object-just-a-little-bit-of-brain/125389/1 "2008-01-08T19:52:22Z")

</div>

I found that it’s easy w Rails 2.0 to deserialize !

data = XmlSimple.xml\_in(result)  
v = Hash.from\_xml(result).values.first

=\> {“membership\_at”=\>“2007-03-28T21:25:31Z”,  
“display\_name”=\>“chane850”, “first\_name”=\>nil, “last\_name”=\>nil}

so now how can I build an ActiveRecord-like object (don’t want to  
create a table)

Membership class with these attributes ?

@membership = Membership.new.build( v ) ? doesn’ t work

any clue ?

thanks

---

<div class="post-metadata">

**Author:** ![Erwin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/a88e57/32.png) [@Erwin](https://www.ruby-forum.com/u/Erwin)\
**Post date:** [January 8, 2008, 8:05pm UTC](https://www.ruby-forum.com/t/half-way-from-re-building-an-object-just-a-little-bit-of-brain/125389/2 "2008-01-08T20:05:22Z")

</div>

Create this class, called tableless.rb in your app/models folder

# Table-less model used for any object that needs validation or for

# any web form that does not need a database.

# Idea and concept from Rick O.

class Tableless \< ActiveRecord::Base  
def self.columns()  
@columns ||= [];  
end

def self.column(name, sql\_type = nil, default = nil, null = true)  
columns \<\< ActiveRecord::ConnectionAdapters::Column.new(name.to\_s,  
default,  
sql\_type.to\_s, null)  
end

# override the save method to prevent exceptions.

def save(validate = true)  
validate ? valid? : true  
end

end

Now just create a new class called Membership (app/models/membership.rb)

class Membership \< Tableless  
column :display\_name, :string  
column :first\_name, :string  
column :last\_name, :string  
column :membership\_at, :datetime

validates\_presence\_of :display\_name, :first\_name, :last\_name,  
membership\_at

end

And then get ready to rock.

m = Membership.new(hash\_from\_xml)  
if m.valid?

# do stuff

else

# do other failure stuff

end

Throw your other membership business rules in the membership.rb class  
too.

I use this technique for contact forms, etc that don’t need backends.
