【问题标题】:Convert SQL query to Active Record将 SQL 查询转换为 Active Record
【发布时间】:2016-04-08 21:31:53
【问题描述】:

我需要使用 Ruby on Rails 查询我的数据库:

select p.name from shoppe_products p
join shoppe_product_categorizations ca on (p.id = ca.product_id)
join shoppe_product_categories c on (c.id = ca.product_category_id)
where c.id = 2

我使用 Ruby v 2.1.5、Rails v 4 和 PG 9.4。

【问题讨论】:

  • 你的模特叫什么名字?
  • 欢迎来到 Stack Overflow。请阅读“How to Ask”和“minimal reproducible example”。我们需要更多信息,例如您尝试了哪些方法以及为什么没有奏效。
  • 如果这些映射到模型并且这些模型建立了它们的关系,那么通常很容易转换。

标签: ruby ruby-on-rails-4 rails-activerecord


【解决方案1】:

你可以简单地执行sql:

query_id = ActiveRecord::Base.connection.quote(id_param)
results = ActiveRecord::Base.connection.exec_query(
  "select p.name from shoppe_products p
  join shoppe_product_categorizations ca on (p.id = ca.product_id)
  join shoppe_product_categories c on (c.id = ca.product_category_id)
  where c.id = #{query_id}"
)

在不知道您的模型等的情况下,这是我能猜到的最佳解决方案。

【讨论】:

  • 这里最好使用准备好的语句,而不是手动引用数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-05
  • 2021-07-05
  • 1970-01-01
  • 2019-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多