new is for a new instance of a specific model:
foo = Foo.new
build is for creating a new instance within an AR association:
bar = foo.build_bar # (has_one or belongs_to)
or
bar = foo.bars.build # (has\_many, habtm or has_many :through)
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
Update
Per @toklands's suggestion, build and new are aliases as defined in ActiveRecord::Relation:
So if class Foo has_many Bars, the following have identical effects:
foo.bars.new
<=> foo.bars.build
Bar.where(:foo_id=>foo.id).new
<=> Bar.where(:foo_id=>foo.id).build
And if !foo.new_record?
foo.bars.new
<=> Bar.where(:foo_id=>foo.id).new
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…