# "acts\_as\_field" behaviour for model function

**URL:** <https://www.ruby-forum.com/t/acts-as-field-behaviour-for-model-function/89309>\
**Category:** Rails\
**Created:** [March 19, 2007, 1:01pm UTC](https://www.ruby-forum.com/t/acts-as-field-behaviour-for-model-function/89309 "2007-03-19T13:01:41Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![apie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/ecccb3/32.png) [@apie](https://www.ruby-forum.com/u/apie)\
**Post date:** [March 19, 2007, 1:01pm UTC](https://www.ruby-forum.com/t/acts-as-field-behaviour-for-model-function/89309/1 "2007-03-19T13:01:41Z")

</div>

Hi

I want to create a model attribute that looks exactly like a db field  
but is  
infact the result of a model function.

Example  
I have a user with name and surname.

I want to be able to do @user.fullname which will then call a function  
that  
returns “name surname” as the full name, and I would like to be able to  
pass  
“name fullname” and have it broken into the seperate fields before  
saving to  
the db, in otherwords I would like it to function exacly asif there is a  
fullname field.

I know this can be done, I just dont know where to start looking for  
this.

Thanks in advance  
Ivor

---

<div class="post-metadata">

**Author:** ![apie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/ecccb3/32.png) [@apie](https://www.ruby-forum.com/u/apie)\
**Post date:** [March 19, 2007, 1:10pm UTC](https://www.ruby-forum.com/t/acts-as-field-behaviour-for-model-function/89309/2 "2007-03-19T13:10:47Z")

</div>

Just define a method on the model like so:

def fullname  
“#{self.name} #{self.surname}”  
end

def fullname=(value)  
value = value.split  
self.name = value[0]  
self.surname = value[1…value.size] # in the case of long last  
names like van Hook  
end

–Jeremy

On 3/19/07, Ivor P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> “name fullname” and have it broken into the seperate fields before saving to  
> the db, in otherwords I would like it to function exacly asif there is a  
> fullname field.
> 
> I know this can be done, I just dont know where to start looking for this.
> 
> Thanks in advance  
> Ivor
> 
> >

–  
[http://www.jeremymcanally.com/](http://www.jeremymcanally.com/)

My free Ruby e-book:  
[http://www.humblelittlerubybook.com/book/](http://www.humblelittlerubybook.com/book/)

My blogs:

> **[Site not found · DreamHost](http://www.mrneighborly.com/)**
>
> The owner of this domain has not yet uploaded their website.

[http://www.rubyinpractice.com/](http://www.rubyinpractice.com/)

---

<div class="post-metadata">

**Author:** ![apie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/ecccb3/32.png) [@apie](https://www.ruby-forum.com/u/apie)\
**Post date:** [March 19, 2007, 1:21pm UTC](https://www.ruby-forum.com/t/acts-as-field-behaviour-for-model-function/89309/3 "2007-03-19T13:21:57Z")

</div>

awesine jeremy.

thanks a lot. I am going to be doing a fair amount of those. so  
basically  
you write 2 functions, one looks like a setter because of the “=” sign  
at  
the end…

very nice.

cheers  
ivor

---

<div class="post-metadata">

**Author:** ![apie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/ecccb3/32.png) [@apie](https://www.ruby-forum.com/u/apie)\
**Post date:** [March 19, 2007, 1:28pm UTC](https://www.ruby-forum.com/t/acts-as-field-behaviour-for-model-function/89309/4 "2007-03-19T13:28:58Z")

</div>

awesome that is 🙂
