Ruby on Rails现有的Sybase数据库

时间:2012-10-11 01:47:25

标签: ruby-on-rails ruby-on-rails-3

我正在尝试使用Rails连接到现有的Sybase数据库并填充一些选择列表。这是我到目前为止所做的:
1.安装和配置FreeTDS
2.安装TinyTDS gem

如果我执行命令tsql -S serverName -U userName,我就能查询数据。我已将config/database.yml配置为:

development:  
  adapter: sybase  
  host: <sybase_host>  
  port: <port_no>  
  username: <user>  
  password: <password>  
  database: <db>

然后我尝试通过rails generate model sybase_db --skip-migration生成模型并编辑创建的app/models/sybase_db.rb文件,如下所示:

class SybaseDb < ActiveRecord::Base  
  set_table_name "my_sybase_table"  
end

当我尝试在SybaseDb.new中运行rails console命令时,它似乎不起作用。我对Rails很陌生,所以我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

所有内容都直到生成名为sybase_db的模型的部分。 Rails中的模型通常链接到数据库中的特定表,而不是整个数据库。 Rails使用命名约定来简化表和列与模型和属性的链接。

例如,如果您的模型User的属性nameemail链接到数据库中名为users且列{{1}的表然后,各种精彩的Rails魔法才起作用。您可以启动rails控制台并执行name以生成数据库中所有用户的集合。或者你可能会做类似

的事情
email

但是,如果您有现有数据库,则可能需要更详细地向Rails解释如何将Sybase中的名称映射到Rails系统中的名称。您在User.all中有一个这样的情况 - 如果您的Sybase表名为> u = User.find_by_email 'joe@example.com' => #<User id: 123, email: "joe@example.com", name: "Joe"...> > u.name => "Joe" 且主键为set_table_name但其列t_useruser_id然后你可以创建像

这样的Rails模型
name

Here's a discussion of this topic on Quora with a couple good links你可能会用来进一步发展。

根据您现有系统的广泛程度,您可能会发现Rails的所有魔力都消失了。 Rails帮助我们避免所有这些映射到这一点,并遵循强大的命名约定,给我们各种美妙的冷静。如果您现有的系统具有强大且可预测的命名约定,并且与Rails的方式相差甚远,那么您可以成功使用Rails。