Fernando Perez wrote:
> Hi,
> 
> In my views I often find myself doing:
> 
> <%= user.login %>
> 
> These get scattered all over the application. Now imagine I change the
> user's login to name. What happens? It blows in my face.

No.  Remember that user.login is not an instance variable accessor, even 
though it looks like one.  It's a method call.
So if you really wanted to, you could do
class User
  def login
    @name
  end
end

> Sure tests can
> catch it, but writing tests for that purpose is too painful.

You're not writing tests "for that purpose".  Rather, you write tests 
that exercise as much of your code as possible, then let them tell you 
when things break.

[...]
> One should never access object's attributes like this in the view, 

Says who?  Again, this is not really getting the model object's 
attributes -- rather, it's calling a method on the model object. 
Whether the object happens to have an instance variable with the same 
name as the method makes no difference to the view and is an irrelevant 
implementation detail.

> and
> yet we see this in almost all tutorials, books and what have you. 

Because there's really no other way to do it, short of assigning every 
model method call to a separate controller variable -- and that's just 
plain silly.

> It's
> now hard for me to get rid of that bad habit, and I don't even know how.

Because of Ruby's complete hiding of instance variables, I think it's 
not a bad habit.  Don't worry about it.

Best,
--
Marnen Laibow-Koser
http://www.marnen.org
[email protected]
-- 
Posted via http://www.ruby-forum.com/.

--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to