problem about accepts_nested_attributes_for

I make two classes job and step, its associate with
accepts_nested_attributes_for, has_many and belongs_to.
liks:

class Job < ActiveRecord::Base
has_many :steps, :dependent => :destroy
accepts_nested_attributes_for :steps

validate :job_validate , :on => :create
def job_validate
p “job validate”
end
end

class Step < ActiveRecord::Base
belongs_to :job

here just test if called this validates_presence_of

validates_presence_of :name , :if => Proc.new { |step| p " step name
validates_presence_of" }
validate_on_create :step_validate

private
def step_validate
p self
p “step validate”
end
end

Tow migtations links:
class CreateJobs < ActiveRecord::Migration
def self.up
create_table :jobs do |t|
t.string :name

  t.timestamps
end

end

def self.down
drop_table :jobs
end
end

class CreateSteps < ActiveRecord::Migration
def self.up
create_table :steps do |t|
t.string :name
t.references :job
t.timestamps
end
end

def self.down
drop_table :steps
end
end

My problem is that when i testing them in script/console as follow:
shell:$ script/console
Loading shelllocal environment (Rails 2.3.5)

job = Job.new
=> #<Job id: nil, name: nil, created_at: nil, updated_at: nil>

job.steps.build
=> #<Step id: nil, name: nil, job_id: nil, created_at: nil,
updated_at: nil>

job.save
" step name validates_presence_of"
#<Step id: nil, name: nil, job_id: nil, created_at: nil, updated_at:

“step validate”
" step name validates_presence_of"
#<Step id: nil, name: nil, job_id: nil, created_at: nil, updated_at:

“step validate”
“job validate”
=> true

As you see the “step validate” called two times.I think “step
validate” be called once is correct. I don’t know why its called tow
times? Who can help me?

thank you !