title: What are factory_girl transient attributes? Why would I use one?
body: <p>I read <a href="https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#transient-attributes" rel="noreferrer">this</a> from Thoughtbot but it's still confusing to me.</p>
  
  <p>This is their example:</p>
  
  <pre><code>factory :user do
    transient do
      rockstar true
      upcased  false
    end
  
    name  { "John Doe#{" - Rockstar" if rockstar}" }
    email { "#{name.downcase}@example.com" }
  
    after(:create) do |user, evaluator|
      user.name.upcase! if evaluator.upcased
    end
  end
  
  create(:user, upcased: true).name
  #=&gt; "JOHN DOE - ROCKSTAR"
  </code></pre>
  
  <p>So,</p>
  
  <ol>
  <li>Is <code>.upcased</code> a real attribute on the model? </li>
  <li>What is the <code>transient</code> block really doing? Setting variables that can then be used in the factory?</li>
  <li>What is <code>evaluator</code>? Does it always need to be passed last? What if your <code>create</code> function uses traits, transients, and has multiple values?</li>
  </ol>