- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 fairly complex sql query我很确定我无法使用 ARel (Rails 3.0.10) 来完成
查看该链接,但它有一些连接和一个 where isn't
子句,我很确定这对于 ARel 来说太复杂了。
然而,我的问题是,在这个查询变得如此复杂之前,通过 ARel,我可以使用 includes
添加我需要的其他模型,以避免 n+1 问题。现在我正在使用 find_by_sql,includes
不起作用。我仍然希望能够获取这些记录并将它们附加到我的模型实例,就像 includes
那样,但我不太确定如何实现这一点。
有人能指出我正确的方向吗?
我还没有尝试将它们加入到同一查询中。我只是不确定它们如何映射到对象(即 ActiveRecord 是否可以将它们正确映射到正确的类)
我知道,当使用 includes
ActiveRecord 实际上会进行第二个查询,然后以某种方式将这些行附加到原始查询中的相应实例。有人可以指导我如何做到这一点吗?或者我需要加入同一查询吗?
最佳答案
让我们假设 SQL 确实无法简化为 Arel。并不是所有的东西都可以,而且我们碰巧真的很想保留我们的自定义 find_by_sql 但我们也想使用包含。
那么 preload_associations 就是你的 friend :(针对 Rails 3.1 进行了更新)
class Person
def self.custom_query
friends_and_family = find_by_sql("SELECT * FROM people")
# Rails 3.0 and lower use this:
# preload_associations(friends_and_family, [:car, :kids])
# Rails 3.1 and higher use this:
ActiveRecord::Associations::Preloader.new(friends_and_family, [:car, :kids]).run
friends_and_family
end
end
请注意,3.1 方法要好得多,因为您可以随时应用急切加载。因此,您可以在 Controller 中获取对象,然后在渲染之前,您可以检查格式并立即加载更多关联。这就是我遇到的情况 - html 不需要急切加载,但 .json 需要。
有帮助吗?
关于sql - ARel 模仿包含 find_by_sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7116087/
我想使用 find_by_sql 方法代替事件记录查询接口(interface),因为我在编写自己的 SQL 时获得了灵 active 。 例如, 在 SQL 中将查询中的表从小到大排序被认为是一种很
我想同时使用 find_by_sql 和包含。 我使用 find_by_sql 是因为我在 from 内部编写 select 以利用索引。 某种方式,如果我使用左连接,索引将被忽略。 但是, find
我有一个 fairly complex sql query我很确定我无法使用 ARel (Rails 3.0.10) 来完成 查看该链接,但它有一些连接和一个 where isn't 子句,我很确定这
我需要对 PHP ActiveRecord 使用自定义查询,因为我需要 UNION 语句,即使我在两个查询上查询同一个表。我希望能够将我的模型中作为 belongs_to 的列包含到结果中。 这是我的
我正在使用 find_by_sql 对这样的关系进行左连接计数: scope :popular, lambda{ |since_date = false| query = "select
我的sql查询是 SELECT MAX(sale_money) FROM ( SELECT SUM(sale_money) sale_money FROM sales WHER
我想执行这样的查询 SELECT * FROM ( SELECT * FROM products ORDER BY price ASC ) AS s GROUP BY item; 返回每个项目的所有产
因此,在 Rails 中,我使用 sqlite3 进行开发,使用 mysql 进行生产。 Sqlite3 和 mysql 以不同方式处理 bool 值(sqlite3 中的“t”或“f”以及 mysq
我的 RoR 脚本中有以下调用: Foo.where("event = 'Login'").group('user_id').order('user_id ASC').count() 这为我提供了所有
我正在尝试使用我创建的存储过程从我的 MySQL 数据库中获取对象。 @locs = Location.find_by_sql("CALL geodist(100.4058, 37.7907, 100
是否存在某种与 mongoid 等价的 find_by_sql,您可以在其中传递一个 mongo 查询并从结果中具体化 Mongoid::Document s? 最佳答案 Mongoid 包装 Col
我正在使用 find my sql,我想在数据库中计算一些东西并添加到我的模型中。 我会尽量简化代码 class User < ActiveRecord::Base attr_accessor
我正在尝试使用 find_by_sql 查询我的 Devise 创建的表,但遇到了一个奇怪的错误。 User.find_by_sql("select username from user") 结果:
我正在使用 RoR 和 mysql 数据库。我想将时间戳列转换为字符串,所以我有 SQL: @books = Book.find_by_sql("select id, name, date_forma
我是 Rails 的新手,但我正在尝试提取一些与用户偏好 (current_user.industry) 相匹配的数据。 rails 中是否有使用 SQL 提取数据并使用来自助手或其他 @variab
我在以下 MySQL 语句中使用日期变量时遇到问题。日期变量包含一个表示日期的字符串。 personal = Event.find_by_sql ["SELECT *
我们有一个相当简单的查询,可以与 AR 查询结构完美配合: user = User.includes({:network => :product}).joins({:network => :produ
我正在尝试将一些基本的报告屏幕放在一起。我将一些相当复杂的 SQL 查询输入到 ActiveRecord 的 find_by_sql 方法中。我在这里遇到的问题是我丢失了原始查询中给出的列顺序。我假设
我们公司喜欢计算晦涩指标的报告——无法使用 ActiveRecord 的查找器(find_by_sql 除外)计算的指标,而 ruport 基于 ruby 的功能太慢了。 是否有插件或 gem 或
我有一个连接到外部数据库的模型,我使用 find_by_sql 方法进行查询,如下所示: External.find_by_sql("SELECT * from table") 但是,当我添加 .pa
我是一名优秀的程序员,十分优秀!