Problem with creating migration files


#1

Hello ,

I am a ROR beginner. I have a controller named “users” and the
corresponding view,model created using the command “ruby script/generate
scaffold user name:string”.By running the command rake db:migrate will
create the table “users” with a field “name” and the migration file
created automatically is “001_create_users.rb”. Now when I tried to add
one more column “password” ,by creating a new migration file using the
command “ruby script/generate migration create_users” an error is
occuring
like “Another file named 001_create_users.rb already exists”. May any
one let me know what is the problem? I am using the right way or not?

Thanks in advance
Indu


#2

Once a migration is created with the scaffold command it cannot be
altered with the scaffold command. Only manually. However, once a
migration file has been used by running rake db:migrate, you are not
recommended to alter this file in a real production site, but rather
you must make a new migration file, but not using scaffold:

script/generate migration AddPasswordColumn

This command would create a new migration file where you can add/alter/
delete database columns and schema.

However, if you are testing and want to redo your first scaffold
command:

rake db:migrate VERSION=0

And now edit the file and rerun:

rake db:migrate

Hank


#3

Thank you for your response and solved my issue


#4

Hi Indu
Did u start the project?
After running script/generate migration AddPasswordColumn you can do
like
In self.up
add_column :users,:password, :string

and may write in self.down (only if needed)

remove_column :users, :password

  Then as usual rake db:migrate

Sijo


#5

Sijo Kg wrote:

Hi Indu
Did u start the project?
After running script/generate migration AddPasswordColumn you can do
like
In self.up
add_column :users,:password, :string

and may write in self.down (only if needed)

remove_column :users, :password

  Then as usual rake db:migrate

Sijo

Thank u Sijo. Just trying on it. Any idea of saving the encoded
password into the database.?


#6

Hi
Suppose there is a User model So in the view you have

<%= password_field ‘user’, ‘password’ %>


Now write in User model

before_create :protect_password
def protect_password
self.password = Digest::MD5.hexdigest(self.password)
end

   There may be also other ways for doing this

Sijo


#7

Sijo Kg wrote:

Hi
Suppose there is a User model So in the view you have

<%= password_field ‘user’, ‘password’ %>


Now write in User model

before_create :protect_password
def protect_password
self.password = Digest::MD5.hexdigest(self.password)
end

   There may be also other ways for doing this

Sijo

Thank you so much for your help. I tried this one and can save the
encrypted password.