2011-12-15 118 views
0

我有一个简单的用户表,我想添加一个新的字段到我的用户表,说永久链接。对于所有用户,此固定链接将更新为以下代码: name.downcase.gsub(/[^0-9a-z]+/, ' ').strip.gsub(' ', '-')。我想创建一个迁移文件,使用上面的代码更新所有用户永久链接字段,以便旧用户设置永久链接,并为新用户使用after_create方法。用迁移文件更新数据库

回答

0

我想你可以尝试这样的事:

class User < ActiveRecord::Base 

    before_create :set_permalink 

    def set_permalink 
    permalink = name.downcase.gsub(/[^0-9a-z]+/, ' ').strip.gsub(' ', '-') 
    end 
end 

这实际上使用before_create回调,这就解决了新用户的permalink场的推导。我认为这是你实际需要的。

而在你迁移文件...

class UpdateUsersPermalink < ActiveRecord::Migration 

    def self.up 
    User.reset_column_information 
    User.all.each do |u| 
     if u.permalink.nil? 
     u.set_permalink 
     u.save! 
     end 
    end 
    end 

    ... 
end 

..这将需要没有这个字段设置,只是还没有任何现有的User S的照顾。

+0

谢谢我会马上试试 – Uchenna 2011-12-15 01:25:43