Andrew Hampton
Andrew Hampton

Reputation: 1742

Rails: Modifying a Model Generated by Scaffolding

How do you modify a model you've generated using modeling? For example, the model myModel originally had columns a, b and c, but I now want to add column d.

Upvotes: 24

Views: 20345

Answers (3)

BookOfGreg
BookOfGreg

Reputation: 3706

Rails 3 and above use the following code :

rails generate migration add_fieldname_id_to_tablename fieldname:string

Rails 2

ruby script/generate migration add_fieldname_to_tablename fieldname:string 

This no longer works and returns the following error in Rails 3:

ruby: No such file or directory -- script/generate (LoadError)

Upvotes: 25

Luke
Luke

Reputation: 3017

ruby script/generate migration add_fieldname_to_tablename fieldname:string

this is the shortcut method to do exactly what you want. if you need more control, or if you have a lot of columns to add, Andrew H's answer will work fine too.

Upvotes: 19

Andrew Hampton
Andrew Hampton

Reputation: 1742

The best answer I've found so far is run this from your project root:

ruby script/generate migration add_d_column_to_myModel 

Then edit the new migration file located in db/migration to look something like:

  def self.up
    add_column :myModel, :d, :string
  end

  def self.down
    remove_column :myModel, :d
  end

The last step will be to update your views accordingly.

Answer found here

Table functions found here

Upvotes: 13

Related Questions