将设备添加到具有不同表名的用户模型

时间:2015-01-26 03:08:37

标签: ruby-on-rails database devise

我正在使用预先存在的数据库,其中用户数据表是t_customer。为了坚持使用rails约定,我将相关模型命名为“User”

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  self.table_name = "t_customer"
  self.primary_key = "cust_id"
end

然后我运行了rails generate devise User,然后是rake db:migrate,但rake中止了错误

  

UndefinedTable:错误:关系“用户”不存在

我该如何解决?这是错误的方法吗?我应该在创建用户模型之后但在创建设计迁移之前运行rake db:migrate或类似的东西吗?我不知道如何让rails知道:用户引用了迁移文件中的t_customer表:

class AddDeviseToUsers < ActiveRecord::Migration
  def self.up
    change_table(:users) do |t|
      ## Database authenticatable
      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""

1 个答案:

答案 0 :(得分:1)

只需更改table_name

即可
class AddDeviseToUsers < ActiveRecord::Migration
  def self.up
    change_table(:t_customer) do |t|
      ## Database authenticatable
      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""