2012-02-02 26 views
15

Tôi đang sử dụng Rails 3. Có thể trùng lặp here. Nhưng nó không giải quyết được vấn đề của tôi, cũng không có giải pháp nào khác.biến cục bộ chưa xác định hoặc phương thức `confirmed_at 'cho #User

di cư của tôi là như sau

class AddConfirmableToDevise < ActiveRecord::Migration 
    def change 
    change_table(:users) do |t| 
     t.confirmable 
    end 
    add_index :users, :confirmation_token, :unique => true 
    end 
end 

tôi có devise :confirmable thêm vào trong User mô hình.

My rake db:migrate không có đầu ra. và trang đăng ký của tôi cung cấp lỗi:

undefined local variable or method 'confirmed_at' for #User 

Có ai có đầu mối không?

+2

bạn nên biết rằng người trợ giúp di chuyển (như 't.confirmable') được đưa ra sẽ không còn được dùng nữa phiên bản 2.0. Từ giờ trở đi, bạn nên [thêm các cột lập trình theo cách thủ công] (https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0-migration-schema-style) –

Trả lời

21

Ok. Tôi đã giải quyết nó. Quá trình di chuyển đã lỗi thời. Tạo di chuyển mới với cùng mã nhưng một tên khác.

1.Run lệnh:

rails g migration add_confirmable_to_devise_v1 

2.In các tập tin chuyển đổi:

class AddConfirmableToDeviseV1 < ActiveRecord::Migration 
    def change 
    change_table(:users) do |t| 
     t.confirmable 
    end 
    add_index :users, :confirmation_token, :unique => true 
    end 
end 

3.Then

rake db:migrate 
4

Tôi đang sử dụng Mongoid và đã nhận lỗi này cùng . Tôi đã thêm các trường này và nhận được rspec để chuyển sang màu xanh lục trên 16 ví dụ của tôi.

field :confirmation_token, :type => String 
field :confirmed_at,   :type => Time 
field :confirmation_sent_at, :type => Time 
field :unconfirmed_email, :type => String 
13

Lưu ý cho chính tôi. Ai đó có thể thấy hữu ích: Những gì chúng tôi cần là 2 lệnh bên dưới:

rake db:migrate:reset 
    rake db:reset 

Thì đấy! Nó hoạt động!

+1

'db: reset' và' rake db: migrate: reset'? 'rake -D db: reset' hoặc' rake -D db: di chuyển: reset' không hiển thị bất cứ điều gì ... – Green

18

Tính đến devise mới nhất, bạn chỉ cần xóa nhận xét khỏi những dòng sau vào sự di cư người dùng devise .. (2013 ....._ devise_create_users.rb)

# Confirmable 
    t.string :confirmation_token 
    t.datetime :confirmed_at 
    t.datetime :confirmation_sent_at 
    t.string :unconfirmed_email # Only if using reconfirmable 
14

Để buộc trong @ DevDude của trả lời với câu trả lời chấp nhận - nếu bạn đã có một Users mô hình hiện tại mà bạn cần phải thêm confirmable, mã di cư đầy đủ cho các phiên bản của lập mưu hiện nay như của 4/14 là:

class AddConfirmableToDeviseV1 < ActiveRecord::Migration 
    def change 
    change_table(:users) do |t| 
     # Confirmable 
     t.string :confirmation_token 
     t.datetime :confirmed_at 
     t.datetime :confirmation_sent_at 
     t.string :unconfirmed_email # Only if using reconfirmable 
    end 
    add_index :users, :confirmation_token, :unique => true 
    end 
end 
+0

Vâng, đây là câu trả lời đúng. Trong thực tế, khi bạn tạo ra một sự di chuyển đầu tiên, điều này sẽ được nhận xét. – Donato

Các vấn đề liên quan