title: Best way to create a "link" method in Rails (model or helper)?
body: <p>I've done a lot of research on this topic and there seems to be some dispute, so I wanted to get your opinions. Here is my basic situation - I have a User model:</p>
  
  <pre><code>class User &lt; ActiveRecord::Base
    # User consists of first_name, last_name, and other fields
    has_one :profile # 1-1 mapping between User and Profile
                     # Profile is a nested resource of User
  
    # this is the method up for debate:
    # this obviously doesn't work unless I include
    # the necessary modules in this class
    def link(*args)
      link_to self.first_name, users_profile_path(self), args
    end
  end
  </code></pre>
  
  <p>My reasoning for this kind of behavior is that, in my views, I'd like to do something like:</p>
  
  <pre><code>&lt;%= @user.link %&gt;
  </code></pre>
  
  <p>instead of:</p>
  
  <pre><code>&lt;%= link_to @user.name, users_profile_path(@user) ... %&gt;
  </code></pre>
  
  <p>every time. This link will be used thousands of times, in many different views. I want to centralize this "method" so that, when I need to make a change, I can make it once.</p>
  
  <p>However, this practice absolutely violates the MVC architecture. Others suggest using a helper:</p>
  
  <pre><code>module UsersHelper
    def profile_link(user, *args)
      link_to user.name, users_profile_path(user), args
    end
  end
  </code></pre>
  
  <p>Now, I have to wrap the user in the method instead of calling it as a method ON user:</p>
  
  <pre><code>&lt;%= profile_link(@user) %&gt;
  </code></pre>
  
  <p>Which, in my opinion, is uglier than the latter example.</p>
  
  <p>So my question is - which is better?? Or is there a way to accomplish this that I'm completely unaware of?</p>