2011-07-26 20 views
0

我最近向我的用戶添加了一個名爲auth_token的新列,它是在創建新用戶時生成的。Rake遷移:如何向所有用戶的遷移中輸入auth_token

如何通過遷移向現有用戶添加auth_token
來源:http://railscasts.com/episodes/274-remember-me-reset-password

PS。我在http://guides.rubyonrails.org/migrations.html找不到這個,所以請不要寄給我。

+1

您是否試圖將'auth_token'添加到現有用戶? –

+0

Yessir,我:) – imjp

+0

我認爲你應該使用db/seeds.rb而不是添加一個新的遷移類。當需要更改數據庫結構而不是其內容時,您希望使用遷移。 –

回答

2
class DoThisThing < ActiveRecord:: Migration 
    def self.up 
     @users = Users.all 
     @users.each do |user| 
     user.auth_token = generate_token 
     user.save 
     end 
    end 
    def self.down 
     puts "non recoverable migration" 
    end 
    def generate_token 
     123456789 
    end 
end 

您可以將任何標準的Ruby/Rails代碼放入遷移中。只要注意stdin/out,以及是否需要將任何特定的庫加載到遷移的內存空間中。

+0

你可以SHA登錄名和創建在每個用戶獲得獨特的東西,但是這樣的事情會起作用。 – wesgarrison

+0

你能否解釋你的方法以及wesgarrison?瞭解各種做事方法總是很好的。 – imjp

+0

上面提到的遷移不起作用。我在「up」部分收到錯誤:( – imjp