2010-04-24 6 views
0
class AddTitleToPosts < ActiveRecord::Migration 
def self.up 
add_column :posts, :title, :string 
    Post.find(:all).each do |post| 
    post.update(:title => post.name.upcase) 
    end 
end 

def self.down 
end 

end 

Comme vous pouvez rien particulièrement compliqué, il suffit d'essayer d'ajouter un nouveau titre de la colonne en changeant le cas de la colonne de nom déjà db. Mais je tente d'appeler une erreur de méthode privée. Je suppose que ça a quelque chose à voir avec soi-même?« Tentative d'appeler la méthode privée » erreur en essayant de changer changer la casse db entires dans le fichier de migration

Merci pour votre aide.

Répondre

1

Étant donné que vous ajoutez une colonne, vous devez réinitialiser les informations d'ActiveRecord relatives à votre modèle. La section L'utilisation d'un modèle après avoir modifié sa table en ActiveRecord::Migration montre un exemple. Cela pourrait fonctionner pour vous

class AddTitleToPosts < ActiveRecord::Migration 
    def self.up 
    add_column :posts, :title, :string 

    Post.reset_column_information 

    Post.find(:all).each do |post| 
     post.update(:title => post.name.upcase) 
    end 
    end 

    def self.down 
    end 
end 
+0

Cela a fonctionné parfaitement. Merci –

Questions connexes