Can anyone tell me what is the difference between build and new command on Rails?
Can anyone tell me what is the difference between build and new command on Rails?
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.buildBar.where(:foo_id=>foo.id).new <=> Bar.where(:foo_id=>foo.id).buildAnd if !foo.new_record?
foo.bars.new <=> Bar.where(:foo_id=>foo.id).new