find_or_create_by_X: As obvious by name this dynamic finder method allows you to find or create a new record on the basis of attributes passed. A very good example by DHH himself goes like this…
class Account < ActiveRecord::Base
has_many :people do
first_name, *last_name = name.split
last_name = last_name.join " "
person = Account.find(:first).people.find_or_create_by_name("David
person.first_name # => "David"
person.last_name # => "Heinemeier Hansson"
find_or_initialize_by_X : This new method in available in edge rails now. Its almost similar to the find_or_create_by_X finder. The basic difference is that this method unlike find_or_create_by_X only initialize the object and do not saves it.