2010-04-24 49 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 

就像你不能特别复杂,只是试图通过在db中更改名称列的大小写来添加新列标题。但我尝试调用私有方法错误。我猜这与'自我'有关?尝试更改迁移文件中的db entires的更改大小时尝试调用私有方法错误

感谢您的帮助。

回答

1

由于您要添加一列,您需要重置ActiveRecord有关您的模型的信息。章节在更改其ActiveRecord::Migration后使用模型显示了一个示例。这可能适合你

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

这很好地工作。谢谢 – 2010-04-29 01:50:24

相关问题