sql - ruby on rails 一个模型中的多个表

标签 sql ruby-on-rails ruby rails-models

我正在使用 Ruby on Rails,我必须创建一个从一个数据库到另一个数据库的导入程序。每个数据库中有 100 多个表,我不想为每个表创建一个模型。是否有可能创建查询,指定表名?我不希望模型绑定(bind)到表。

例如:FirstDatabase.select('*').from('some_table').where(...)

没有 set_table_name ... 只是动态模型

我还需要在不同的表中插入

最佳答案

我根本不会为该任务使用模型。相反,请根据需要使用基础连接的#select_all、#exec_insert、#exec_update 和#exec_delete 方法。

ActiveRecord::Base.connection.select_all("select * from #{table_name}")

返回行的散列数组。

ActiveRecord::Base.connection.exec_insert("insert into #{table} (foo, bar) values(#{foo}, #{bar})

插入一行。对于您使用的任何数据库,这些值都需要正确转义字符串、日期等。

ActiveRecord::Base.connection.quote("fo'o")
=> "'fo''o'"  # When server is PostgreSQL

返回适合在 SQL 语句中使用的带引号的字符串表示形式。

now=Time.now
=> Fri Aug 23 02:24:40 -0700 2013

ActiveRecord::Base.connection.quote(now)
=> "'2013-08-23 09:24:40.365843'"

返回以 UTC 时区表示的引用日期/时间。

要处理多个数据库,您可以为每个数据库设置一个模型,然后从这些模型而不是从 ActiveRecord::Base 获取连接。

class TableInDbA << ActiveRecord::Base
  establish_connection "database_a_#{Rails.env}"
end

class TableInDbB << ActiveRecord::Base
  establish_connection "database_b_#{Rails.env}"
end

TableInDbA.connection.select_all("...

关于sql - ruby on rails 一个模型中的多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18397732/

相关文章:

java - 使用 hibernate.hbm2ddl.import_files 执行 sql 脚本时出错?

ruby-on-rails - ActiveResource:指定重试?

ruby-on-rails - 如何将 ActiveModel::Serializer 应用于自定义对象?

ruby-on-rails - 定义返回 404 的路由的最简单方法

ruby-on-rails - 如何使用 Ruby 获取网站 (url) cookie 列表

Ruby:如何处理失败或无效的初始化

mysql - 显示SQL查询的所有结果(包括where count 0)

sql - 使用 group by 时出错

ruby-on-rails - Rails Ajax 单行 RJS 文件

c# - 将数据库中的数据绘制图表并合并具有相同值的行