2013-03-07 103 views
3

我在学习Ruby的早期阶段。我真的不知道如何使用现有的充满表和ruby数据的数据库。每一篇指南,我在互联网上找到或找到的每篇文章都会使用迁移功能创建一个新文章。在Ruby on Rails中使用现有的SQL Server数据库

但是,哪些是在RoR上使用SQL服务器中的现有数据库的步骤?

回答

8

你很幸运,朋友。我的第一个Rails项目(7年前)反对可怕的建立SQL Server数据库。

根据以上所述,您需要适当地设置您的database.yml。但是对于现有的数据库来说,显然表和列名不太可能符合Rails惯例。好消息是,您可以覆盖所有这些默认设置。下面是这些指令的非详尽列表:

在模型从AR :: Base的下降,

set_table_name 'actual_table_name'
set_primary_key 'actual_primary_key_name'

在各种协会的相关法令(HAS_ONE ,has_many,belongs_to),还有:用于指定外键名称的foreign_key键。

现在,MS SQL Server允许您执行哪个TERRIBLE的事情之一是您可以将空格嵌入列名称中。不用担心,您仍然可以使用write_attribute(“严重命名的列”)和read_attribute(“严重命名的列”)按名称引用这些列。您也可以参考他们的各种指令,像这样:

validates_length_of“传真号码”:最大=> 17:allow_nil =>真

最后,你可能指的是隐含的方法,这些过分地命名列产生像这样:

self.send(“传真号码=”,new_fax_number)

很显然,你不能把它们称为符号,因为空间在Ruby中的符号不​​允许。

祝你好运,下次我希望你能用真正的RDBMS,如Informix :)来工作。

+0

为什么这个错误是发生ODBC ::错误:S0002(208)[微软] [ODBC SQL Server驱动程序] [SQL服务器]无效的对象名称 – chinchu 2013-03-07 10:18:01

+0

我不你知道你在做什么时想做什么? – 2013-03-07 19:33:11

0

首先,您必须将您的应用程序设置为用户数据库连接的sql server。 您必须使用宝石SQL服务器在您的宝石文件并必须相应地设置database.yml文件。

的database.yml,在配置文件夹把名字相同的数据库在这个文件中的发展的一部分。

development: 
    adapter: 
    database: db_name_dev 
    username: 
    password: 
    host: localhost 
    socket: 
0

使用现有的服务器。在您的database.yml中,您必须指定主机,端口和数据库名称。

`database: <host>:<port>/<database_name>` 

对于如

development: 
    adapter: mysql2 
    database: your.mysqlserver.com:1521/project_database 
    username: project_user 
    password: project_password