Senthil Kumar Bhaskaran Senthil Kumar Bhaskaran - 1 year ago 103
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?

Answer Source

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=>
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download