如何导入SQL架构Rails的
例如说我有一个SQL模式,它已经准备就绪。我如何将它导入到我的Rails应用程序中,以便使用我准备好的数据库而不是所有那些有趣的迁移。如何导入SQL架构Rails的
编辑:你们都误解了我的问题至今。我在问PostgresQL是否有工作的数据库应用程序。我如何将这作为我的Rails应用程序的基础?
提供数据库表按照Rails的ActiveRecord naming conventions那么你应该去的好。运行SQL以创建数据库对象。然后,您可以以常规方式生成Rails模型,但跳过创建迁移文件。
例如:
script/generate --skip-migration User name:string, age:integer
我将转储当前数据库到轨架构,然后用它来生成迁移文件。通过这种方式,您可以更好地控制数据库,并采用导轨方式。 对于这一点,你应该:
- 设置你的数据库配置文件(配置/ database.yml中)
- 运行
rake db:schema:dump
这将创建模式文件db/schema.rb
- 使用创建迁移文件/文件 - 你
schema.rb
内容
#db/migrate/001_create_database.rb
class CreateDatabase < ActiveRecord::Migration
def self.up
# the content of schema.rb
end
def self.down
# drop all the tables
end
end
这样你以后可以采取迁移的优势,开发应用程序时。
这应该这样做
def self.up
execute <<EOF
begin;
SQL HERE
commit;
EOF
end
另外需要注意的是,当你执行rake db时:迁移时,所有这些都会在迁移过程中运行一些SQL:任何模型都需要手动设置。 – 2009-06-02 10:58:35
有您使用迁移没有要求,“搞笑”或其他。从表格开始创建模型。 Rails作者非常聪明,认识到需要支持“传统模式”。
需要注意的是,如果你的主键不叫id
,那么你就需要定义主键(见P316“敏捷Web开发使用Rails第3版”):
class LegacyBook < ActiveRecord::Base
self.primary_key = "isbn"
end
同样,如果您外键名称不遵循AR常规默认样式,您需要在关系定义中明确定义它们。
开箱,ActiveRecord的不支持复合主键:不过它那种假设的东西更像是第五范式(PK只是一种任意数量的与业务域没有意义)。至少有一个gem,适当命名为composite_primary_keys(以通常方式安装gem),但它可能不支持AR 2.3(我在参考gem list --remote composite
时看到v2.2.2)。关于Google Groups有一些讨论。
编辑你的config /数据库。像这样的yml文件:
development:
database: [your legacy database name]
host: localhost
adapter: postgres
您可能必须包含用户名和密码键,我通常不会为postgres。你也想在postgres中设置一个测试数据库。
一旦你已经配置在这样的开发数据库,你将能够:
> rake db:schema:dump
,并使用
> rake db:schema:load RAILS_ENV=test
与生成的文件创建测试数据库。
我的回应和麦克伍德豪斯仍然站立。 – 2009-06-02 10:44:43