"acts_as_field" behaviour for model function


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

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

Just define a method on the model like so:

def fullname
    "#{self.name} #{self.surname}"

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


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.



awesome that is :slight_smile: