From 7afd3debe4510bc75d4235514f21f8a66c5d00ec Mon Sep 17 00:00:00 2001 From: jbranchaud Date: Mon, 1 Jun 2015 08:02:03 -0500 Subject: [PATCH] Add FactoryGirl Sequences as a ruby til. --- README.md | 1 + ruby/factory-girl-sequences.md | 43 ++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 ruby/factory-girl-sequences.md diff --git a/README.md b/README.md index 613f092..0c48822 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,7 @@ smart people at [Hashrocket](http://hashrocket.com/). - [Destructuring Arrays In Blocks](ruby/destructuring-arrays-in-blocks.md) - [Disassemble Some Codes](ruby/disassemble-some-codes.md) - [Evaluating One-Off Commands](ruby/evaluating-one-off-commands.md) +- [FactoryGirl Sequences](ruby/factory-girl-sequences.md) - [Finding The Source of Ruby Methods](ruby/finding-the-source-of-ruby-methods.md) - [Limit Split](ruby/limit-split.md) - [Parallel Bundle Install](ruby/parallel-bundle-install.md) diff --git a/ruby/factory-girl-sequences.md b/ruby/factory-girl-sequences.md new file mode 100644 index 0000000..369fce4 --- /dev/null +++ b/ruby/factory-girl-sequences.md @@ -0,0 +1,43 @@ +# FactoryGirl Sequences + +[FactoryGirl sequences](https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#sequences) +are often used inline for unique values such as emails: + +```ruby +factory :user do + sequence(:email) { |n| "person#{n}@example.com" } +end +``` + +However, a sequence can be defined on its own + +```ruby +FactoryGirl.define do + sequence :email do |n| + "person#{n}@example.com" + end +end +``` + +That means it can be invoked outside the context of a factory + +```ruby +> FactoryGirl.generate :email +=> "person1@example.com" +> FactoryGirl.generate :email +=> "person2@example.com" +``` + +Or it can be used as a shared sequence across multiple factories + +```ruby +factory :customer do + ... + email +end + +factory :admin do + ... + email +end +```