mysql - Sinatra 中带有远程 MySQL 的 ActiveRecord

标签 mysql ruby activerecord sinatra

我在为我的特定问题寻找资源时遇到困难,或者至少我不理解我正在寻找的资源。

我需要我的 Sinatra 应用程序能够查询远程 MySQL 数据库并返回一些数据。我对数据库有只读访问权限,所以我需要做的就是检索它。我知道数据库有效,我的连接有效,我尝试使用的查询有效。这是一些示例代码:

db = ActiveRecord::Base.establish_connection(
  adapter:  'mysql', 
  host:     host, 
  database: database,
  username: user,
  password: pass)

然后我尝试用这样的方式查询连接

@courses = db.find_by_sql("SELECT *")

但是 db 对象没有 find_by_sql 方法,或者实际上没有任何看起来可以完成这项工作的方法。我是不是错过了一个步骤或某件事来到达我可以查询数据库的地方,还是其他什么?

最佳答案

我不知道establish_connection的返回值是什么。我怀疑这可能不是你想要的。运行 find_by_sql 的正常方法是:

ActiveRecord::Base.find_by_sql(...)

如果您已经有一个模型,您还可以:

MyModel.find_by_sql(...)

另一种方法是直接访问连接适配器对象并在其上调用execute:

ActiveRecord::Base.connection.execute(...)

关于mysql - Sinatra 中带有远程 MySQL 的 ActiveRecord,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11211629/

相关文章:

mysql - 在 MySQL 中从 incode/outcode 计算持续时间的最佳方法是什么?

php - 订单执行后?

ruby - 如何使用 Devise 来保护 delayed_job_web 接口(interface)?

ruby-on-rails - Ruby on Rails link_to URL 并在末尾添加 id

ruby - 如何增加 ActiveRecord 中的最大池大小?

ruby-on-rails - 检查 Rails 数据库查询是否不返回任何内容

mysql - 将索引提升为主键

mysql - 使用 HYDRATE_NONE 时 MySQL 文本字段开头的字符串长度?

ruby-on-rails - 愚蠢的 block 中的 block rspec 测试

activerecord - 如何使用 Rails 3 范围过滤不存在​​关联记录的 habtm 连接表?