2011-10-14 46 views
0

我在我的管理員和報告模型之間創建了一對一關聯,但它尚未正常工作。我正在使用Devise通過管理員模式登錄,因此在控制器中我使用current_admin幫助程序。愚蠢的問題,但我需要運行什麼樣的遷移來實現這個工作?如何讓這個一對一的關聯工作?

錯誤

ActiveRecord::StatementInvalid (PGError: ERROR: column reports.admin_id does not exist 
2011-10-14T09:16:57+00:00 app[web.1]: LINE 1: SELECT "reports".* FROM "reports" WHERE ("reports".admin_id = ... 

報表模型

belongs_to :admin, :foreign_key => "admin_id" 

管理模式

has_one :report, :foreign_key => "admin_id" 

控制器

@report = current_admin.report 

模式

create_table "reports", :force => true do |t| 
    t.string "name" 
    t.string "description" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.string "user_id" 
end 

create_table "admins", :force => true do |t| 
    t.string "email",         :default => "", :null => false 
    t.string "encrypted_password",  :limit => 128, :default => "", :null => false 
    t.string "reset_password_token" 
    t.datetime "reset_password_sent_at" 
    t.datetime "remember_created_at" 
    t.integer "sign_in_count",       :default => 0 
    t.datetime "current_sign_in_at" 
    t.datetime "last_sign_in_at" 
    t.string "current_sign_in_ip" 
    t.string "last_sign_in_ip" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
end 

回答

0

您需要reportsadmin_id。您可以刪除模型中的foreign_key材料。這是自動完成的。創建遷移,添加

add_column :reports, :admin_id, :integer 

運行rake db:migrate然後就完成了。

相關問題