Senthil Kumar Bhaskaran Senthil Kumar Bhaskaran - 24 days ago 6
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=>