On Mon, Jan 30, 2012 at 9:09 PM, Rodrigo Ruiz wrote:
Hi, I'd like to know why I can't, or how can I, access attributes like
that:
class User < ActiveRecord::Base
def name
@first_name + @last_name
end
end
first_name and last_name are user attributes in the database.
ActiveRecord dynamically defines "accessor methods" on the
user instance.
That user instance is accessible as 'self' inside the user instance,
so you could do
class User < ActiveRecord::Base
def name
self.first_name + self.last_name
end
end
But, in Ruby, when using a _read_ accessor, you could also write it
without the explicit 'self'.
class User < ActiveRecord::Base
def name
first_name + last_name
# same as self.first_name + self.last_name
# if there is no first_name, last_name local variable
# defined in the scope
end
end
For _write_ accessors, you _must_ put the self in front, that is:
self.full_name = "#{first_name} #{last_name}"
And the @first_name you asked about, that is an "instance variable".
Read one of the many Ruby tutorials or books to understand this better.
HTH,
Peter
--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.