Senthil Kumar Bhaskaran Senthil Kumar Bhaskaran - 4 months ago 29
Ruby Question

What is the difference between build and new 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 =

build is for creating a new instance within an AR association:

bar = foo.build_bar  # (has_one or belongs_to)


bar = # (has_many, habtm or has_many :through)

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:

  • <=>
  • Bar.where(:foo_id=> <=> Bar.where(:foo_id=>

And if !foo.new_record?

  • <=> Bar.where(:foo_id=>