2010-12-12 51 views
4

這可能不是設計具體的,但我不知道如何將附加模塊添加到已安裝寶石時初始安裝不包括說模塊?在設計的情況下,遷移幫手t.confirmable在初始遷移的Self.up方法中很有用,並且整個用戶表在Self.down中被拆除。我的Rails福是沒有強大到足以發現什麼t.confirmable助手實際上是在做......當User表已經存在,你想添加類似:confirmable:token_authenticatable設計寶石:在最初的添加模塊安裝

會發生什麼?顯然,你不能只是create_table(:users) ......所以我認爲我想add_column :users, ...remove_column :users, ...但我們怎麼去找出需要發生什麼?

回答

4

看看設計::架構

https://github.com/plataformatec/devise/blob/master/lib/devise/schema.rb

具有這種

# Creates confirmation_token, confirmed_at and confirmation_sent_at. 
    def confirmable 
     apply_devise_schema :confirmation_token, String 
     apply_devise_schema :confirmed_at,   DateTime 
     apply_devise_schema :confirmation_sent_at, DateTime 
    end 

然後

https://github.com/plataformatec/devise/blob/master/lib/devise/orm/active_record.rb

def apply_devise_schema(name, type, options={}) 
    column name, type.to_s.downcase.to_sym, options 
end 

所以在遷移只是做

add_column :users, :confirmation_token, :string 
add_column :users, :confirmed_at, :datetime 
add_column :users, :confirmation_sent_at, :datetime 

和對面的下來..

0

您的遷移:

class DeviseAddConfirmable < ActiveRecord::Migration 
    def change 
     change_table(:users) do |t| 
      t.confirmable 
     end 

     add_index :users, :confirmation_token, :unique => true 
    end 
    end