我正在尝试为现有数据库创建模型。我对此数据库具有只读权限。我已经生成了我的模型,但是当我运行rake db:migrate时,它想要“创建”那些表。有没有办法满足rails需要迁移而不实际创建这些表(因为它们已经存在)?
答案 0 :(得分:1)
如果您的模型和表格已经与Rails的命名方案对齐 - User
model => users
表等,并且您的模型继承自ActiveRecord::Base
,然后您根本不需要运行迁移(无论如何都不能运行迁移,因为根据定义迁移会更改您的数据库并且您具有只读权限访问)。
如果表名与模型名称不匹配,您可以更改模型名称,也可以在模型中设置self.table_name=
。例如,如果您有User
模型但该表名为accounts
,则可以执行此操作:
class User < ActiveRecord::Base
self.table = 'accounts'
# other stuff here
end
请点击此处了解详情:http://api.rubyonrails.org/classes/ActiveRecord/ModelSchema/ClassMethods.html#method-i-table_name-3D
此外,您应该删除迁移文件。如果要在db/schema.rb
中查看架构,可以通过运行rake db:schema:dump
来执行架构转储。假设您的设置在config/database.yml
中正确无误,则应生成该文件。