Rails: 查询远程数据库上的特定 table

Rails: Querying a specific table on a remote db

我正在尝试构建一个 Rails 应用程序,该应用程序在远程数据库上查询 table 并将选定的信息显示为 HTML。远程数据库是 SQL Anywhere 16。信息位于数据库的特定 table 上,例如:db.inventory。列名设置如下:primarykey | ItemName | ItemPrice | ItemQuantity | etc。我想做的是提取一些信息并显示,例如 <itemname /> <itemprice /> <itemquantity />

远程数据库是 SQL Anywhere 16,所以我在 gem 文件中安装了 sqlanywhere gem 和 activerecord-sqlanywher-adapter

除了本地 sqlite 数据库之外,我还在 database.yml 中设置了连接信息:

my_external_database:
  adapter: sqlanywhere
  encoding: utf-8
  username: (username)
  password: (password)
  server: (name of the server)
  host: (ip of the server)

我的模型是这样设置的:

class MyExternalModel < ActiveRecord::Base
    establish_connection(:my_external_database)
    set_table_name 'tablename'
end

我不明白的是 (1) 如何测试连接,以及 (2) 如何在数据库上查询我需要的特定 table。数据库中有多个table,但我只想查询特定的一个。第三,我不确定我将如何实际显示这些数据,但是......小步骤。

我认为 set_table_name 会让您指定特定的 table。

您还可以更改主键...

self.primary_key = 'primaryKey'
self.table_name = 'db.inventory'

您可以通过 运行 rails console 然后执行 MyExternalModel.firstMyExternalModel.find(1)

从健全的角度测试连接

假设您不写入远程数据库,您可以按原样在测试中使用该模型(测试准备只会清除您的测试数据库)。